首頁  >  文章  >  後端開發  >  如何高效判斷兩根弦是否互相旋轉?

如何高效判斷兩根弦是否互相旋轉?

DDD
DDD原創
2024-10-25 03:22:29362瀏覽

How to Efficiently Determine If Two Strings Are Rotations of Each Other?

檢查字串旋轉:一種有效的解決方案

在軟體開發人員職位的面試中,候選人面臨一個挑戰:確定是否有兩個字串是彼此的旋轉版本。具體來說,給定“s1”和“s2”,任務是透過旋轉字元來驗證“s1”是否是“s2”的修改版本。

面試官的方法

候選人的回答涉及找到「s2」中與「s1」中的子字串匹配的最長前綴,該子字符串代表旋轉點。透過將“s2”在該點劃分為“s2a”和“s2b”,“s2a”和“s2b”的串聯可以與“s1”進行比較以獲得相等性。

更簡單的解決方案

然而,面試官建議了更直接的方法:確保“s1”和“s2”具有相同的長度,然後測試“ s2”是否是“s1”與其自身連接的子字串。此方法利用了這樣一個事實:旋轉後的字串與原始字串連接時始終是原始字串的子字串。

Java 實作

在Java 中,一個簡單的實作該解決方案可能如下所示:

<code class="java">boolean isRotation(String s1, String s2) {
    return (s1.length() == s2.length()) && ((s1 + s1).indexOf(s2) != -1);
}</code>

效率分析

此解決方案的時間複雜度為O(n),其中n 是字串的長度,因為它涉及單一字串連接和對組合結果的子字串搜尋。由於連接字串需要空間,空間複雜度也是 O(n)。

透過提供一種簡單有效的方法來檢查字串旋轉,這種替代方法滿足了面試官對簡單有效的要求檢測字串的旋轉版本。

以上是如何高效判斷兩根弦是否互相旋轉?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn