題目描述
如果對于一個(gè)字符串A,將A的前面任意一部分挪到后邊去形成的字符串稱為A的旋轉(zhuǎn)詞。比如A="12345",A的旋轉(zhuǎn)詞有"12345","23451","34512","45123"和"51234"。對于兩個(gè)字符串A和B,請判斷A和B是否互為旋轉(zhuǎn)詞。
給定兩個(gè)字符串A和B及他們的長度lena,lenb,請返回一個(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;
}
};