題目描述
如果對(duì)于一個(gè)字符串A产场,將A的前面任意一部分挪到后邊去形成的字符串稱為A的旋轉(zhuǎn)詞拳喻。比如A="12345",A的旋轉(zhuǎn)詞有"12345","23451","34512","45123"和"51234"档桃。對(duì)于兩個(gè)字符串A和B行冰,請(qǐng)判斷A和B是否互為旋轉(zhuǎn)詞被碗。
給定兩個(gè)字符串A和B及他們的長度lena撒犀,lenb福压,請(qǐng)返回一個(gè)bool值,代表他們是否互為旋轉(zhuǎn)詞或舞。
測試樣例:
"cdab",4,"abcd",4
返回:true
題解
算法思路:
- 判斷str1和str2是否長度相等荆姆;
- 若長度相等,生成str1與str1的大字符串映凳;
- 用KMP算法判斷大字符串中是否含有str2胆筒。
class Rotation {
public:
bool chkRotation(string A, int lena, string B, int lenb) {
// write code here
string tmp;
if(lena != lenb) return false;
tmp = A + A;
if(tmp.find(B) != -1) return true;
return false;
}
};