1.题目
字符串轮转。给定两个字符串s1和s2,请编写代码检查s2是否为s1旋转而成(比如,waterbottle是erbottlewat旋转后的字符串)。
示例1:
输入:s1 = "waterbottle", s2 = "erbottlewat"
输出:True
示例2:
输入:s1 = "aa", "aba"
输出:False
提示:
字符串长度在[0, 100000]范围内。
说明:
你能只调用一次检查子串的方法吗?
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/string-rotation-lcci
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
2.题解
长度一致,直接将第一个串乘2,在其中找串二.
class Solution {
public:
bool isFlipedString(string s1, string s2) {
return s1.size()==s2.size()&&(s1+s1).find(s2)!=-1;
}
};
字符串轮转:
class Solution {
public:
bool isFlipedString(string s1, string s2) {
int m=s1.size(),n=s2.size();
if(m!=n) return false;
int i=0,j=0,x=0;
while(i<m){
if(s1[i]==s2[j]){
i++;
j++;
x++;
}else{
i=0;
j++;
x++;
}
j>=m?j%=m:j;
if(x>=m*2) break;
}
if(i==m) return true;
else return false;
}
};
链接:https://leetcode-cn.com/problems/string-rotation-lcci/solution/zi-fu-chuan-lun-zhuan-by-solo-tu/