题解中的大佬
1 2 3 4 5 6
| class Solution { public: bool isFlipedString(string s1, string s2) { return s1.size() == s2.size() && (s1 + s1).find(s2) != -1; } };
|
把旋转字符串前半部分补充成旋转前的,后半部分也补充成旋转前的。最后就变成了两个旋转前的拼起来,而旋转后的必然存在与其中。find表示未找到s2子串就返回-1。
普通正常方法(模拟)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| class Solution { public: bool isFlipedString(string s1, string s2) { if(s1.size() != s2.size()) return false; if(s1.empty()) return s2.empty(); for(int i = 0; i < s2.size(); ++i) { if(s2[i] == s1[0]) { int j = i + 1; int k = 1; while(k < s1.size() && s2[j % s2.size()] == s1[k]) { ++j; ++k; } if(k == s1.size()) return true; } } return false; } };
|