leetcode 链接:字符串轮转

题目

给定两个字符串 s1和 s2,请编写代码检查 s2 是否为 s1 旋转而成(比如,waterbottleerbottlewat 旋转后的字符串)。
要求:只能调用一次检查子串的方法

示例:

  1. 输入:s1 = "waterbottle", s2 = "erbottlewat"
  2. 输出:True
  3. 输入:s1 = "aa", s2 = "aba"
  4. 输出:False

解答 & 代码

  • 如果两个字符串不等长,直接返回 false
  • 如果两个字符串登场,将字符串 s1 与自身拼接,查找 s2 是否是拼接后 s1 的子串,若是则返回 true,否则返回 false
    • eg. s1 = “waterbottle“, s2 = “erbottlewat
    • s1 + s1 = “wat**erbottlewat**erbottle“, 可以看到 s2 是 s1 与自身拼接后的子串
      1. class Solution {
      2. public:
      3. bool isFlipedString(string s1, string s2) {
      4. if(s1.size() != s2.size())
      5. return false;
      6. else
      7. {
      8. s1 += s1;
      9. if(s1.find(s2) != s1.npos)
      10. return true;
      11. else
      12. return false;
      13. }
      14. }
      15. };
      执行结果: ``` 执行结果:通过

执行用时:4 ms, 在所有 C++ 提交中击败了 90.99% 的用户 内存消耗:7.7 MB, 在所有 C++ 提交中击败了 50.89% 的用户 ```