leetcode 链接:字符串轮转
题目
给定两个字符串 s1和 s2,请编写代码检查 s2 是否为 s1 旋转而成(比如,waterbottle
是 erbottlewat
旋转后的字符串)。
要求:只能调用一次检查子串的方法
示例:
输入:s1 = "waterbottle", s2 = "erbottlewat"
输出:True
输入:s1 = "aa", s2 = "aba"
输出:False
解答 & 代码
- 如果两个字符串不等长,直接返回 false
- 如果两个字符串登场,将字符串 s1 与自身拼接,查找 s2 是否是拼接后 s1 的子串,若是则返回 true,否则返回 false
- eg. s1 = “
waterbottle
“, s2 = “erbottlewat
“ - s1 + s1 = “
wat**erbottlewat**erbottle
“, 可以看到 s2 是 s1 与自身拼接后的子串
执行结果: ``` 执行结果:通过class Solution {
public:
bool isFlipedString(string s1, string s2) {
if(s1.size() != s2.size())
return false;
else
{
s1 += s1;
if(s1.find(s2) != s1.npos)
return true;
else
return false;
}
}
};
- eg. s1 = “
执行用时:4 ms, 在所有 C++ 提交中击败了 90.99% 的用户 内存消耗:7.7 MB, 在所有 C++ 提交中击败了 50.89% 的用户 ```