字串輪轉。給定兩個字串s1和s2,請編寫**檢查s2是否為s1旋轉而成(比如,waterbottle是erbottlewat旋轉後的字串)。
示例一:
輸入:s1 = 「waterbottle」, s2 = 「erbottlewat」示例二:輸出:true
輸入:s1 = 「aa」, s2 = 「aba」這題沒有做出來,測試樣例過了,內部樣例沒過,報告0x500000000錯誤,應該是自己定義變數記憶體有問題。輸出:false
一、做法很簡單,但是很難想:就是s1和s1相加一定會出現s2(如果是字串輪轉就一定會,使用一條語句就可以判斷了(s1+s1).find(s2)
)
二、遍歷兩個字串,對idx取模,一直到遍歷結束,如果都相同,則為true#include
//成功示例
using
namespace std;
intmain()
else
if(s1.
length()
==s2.
length()
)else
return0;
}
三、利用雙指標方法,s1依次遍歷,s2指到的元素如果和s1當前元素不同就從新開始,這樣的話最後s1最後幾個元素對應到s2前幾個元素,所以接下來只用比較s1前面的元素和s2後面的元素。#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
;}
#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 字串...