刷题-力扣-面试题 01.09. 字符串轮转
题目链接
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/string-rotation-lcci
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
题目描述
字符串轮转。给定两个字符串s1和s2,请编写代码检查s2是否为s1旋转而成(比如,waterbottle是erbottlewat旋转后的字符串)。
示例1:
输入:s1 = "waterbottle", s2 = "erbottlewat"
输出:True
示例2:
输入:s1 = "aa", s2 = "aba"
输出:False
提示:
- 字符串长度在[0, 100000]范围内。
说明: - 你能只调用一次检查子串的方法吗?
题目分析
- 根据题目描述,若s2是s1旋转的到,那么s1也可由s2旋转得到
- 若在旋转的位置将字符串分为两部分,s1的前半部分对应s2后半部分;s1的后半部分对应s2的前半部分
- 当两个s1首尾拼接后就会包含s2
代码
class Solution {
public:
bool isFlipedString(string s1, string s2) {
if (s1.length() != s2.length()) { return false; }
std::string s12 = s1 + s1;
return s12.find(s2) == std::string::npos ? false : true;
}
};