01 09字串旋轉

2021-10-13 05:28:06 字數 1515 閱讀 2971

字串輪轉。給定兩個字串s1和s2,請編寫**檢查s2是否為s1旋轉而成(比如,waterbottleerbottlewat旋轉後的字串)。

示例一:

輸入:s1 = 「waterbottle」, s2 = 「erbottlewat」

輸出:true

示例二:

輸入:s1 = 「aa」, s2 = 「aba」

輸出:false

這題沒有做出來,測試樣例過了,內部樣例沒過,報告0x500000000錯誤,應該是自己定義變數記憶體有問題。

一、做法很簡單,但是很難想:就是s1和s1相加一定會出現s2(如果是字串輪轉就一定會,使用一條語句就可以判斷了(s1+s1).find(s2)

#include

//成功示例

using

namespace std;

intmain()

else

if(s1.

length()

==s2.

length()

)else

return0;

}

二、遍歷兩個字串,對idx取模,一直到遍歷結束,如果都相同,則為true

#include

using

namespace std;

bool

issame

(const string &s1,

const string &s2,

int pos1,

int pos2)

;int

main()

}if(s1==s2) flag=

true

; cout

}bool

issame

(const string &s1,

const string &s2,

int pos1,

int pos2)

return

true

;}

三、利用雙指標方法,s1依次遍歷,s2指到的元素如果和s1當前元素不同就從新開始,這樣的話最後s1最後幾個元素對應到s2前幾個元素,所以接下來只用比較s1前面的元素和s2後面的元素。

#include

using

namespace std;

intmain()

else

} flag=

true

;for

(int i=

0;jsize()

;j++

,i++)}

} cout

}

字串 面試題 01 09 字串輪轉

題目 字串輪轉。給定兩個字串s1和s2,請編寫 檢查s2是否為s1旋轉而成 比如,waterbottle是erbottlewat旋轉後的字串 示例1 輸入 s1 waterbottle s2 erbottlewat 輸出 true 示例2 輸入 s1 aa s2 aba 輸出 false 提示 字串...

面試題 01 09 字串輪轉

字串輪轉。給定兩個字串s1和s2,請編寫 檢查s2是否為s1旋轉而成 比如,waterbottle是erbottlewat旋轉後的字串 示例1 輸入 s1 waterbottle s2 erbottlewat 輸出 true 示例2 字串長度在 0,100000 範圍內。說明 你能只呼叫一次檢查子串...

面試題 01 09 字串輪轉

難度 簡單 字串輪轉。給定兩個字串s1和s2,請編寫 檢查s2是否為s1旋轉而成 比如,waterbottle是erbottlewat旋轉後的字串 示例1 輸入 s1 waterbottle s2 erbottlewat 輸出 true 示例2 輸入 s1 aa s2 aba 輸出 false 字串...