题目
字符串轮转。给定两个字符串s1和s2,请编写代码检查s2是否为s1旋转而成(比如,waterbottle是erbottlewat旋转后的字符串)。
示例1:
输入:s1 = "waterbottle", s2 = "erbottlewat" 输出:True
示例2:
输入:s1 = "aa", s2 = "aba" 输出:False
解题
方法一:拼接字符串
1.如果字符串长度不相等,一定不是轮转结果
2.轮转s2+s2拼接后,一定包含s1
class Solution { public: bool isFlipedString(string s1, string s2) { if(s1.size()!=s2.size()) return false; return (s2+s2).find(s1)!=-1; } };
方法二:模拟
class Solution { public: bool isFlipedString(string s1, string s2) { int m=s1.size(),n=s2.size(); if(m!=n) return false; if(m==0) return true; for(int i=0;i<m;i++){ bool flag=true; for(int j=0;j<m;j++){ if(s1[(i+j)%n]!=s2[j]){ flag=false; break; } } if(flag) return true; } return false; } };