题目:
给定两个字符串, s 和 goal。如果在若干次旋转操作之后,s 能变成 goal ,那么返回 true 。
s 的 旋转操作 就是将 s 最左边的字符移动到最右边。
例如, 若 s = 'abcde',在旋转一次之后结果就是'bcdea' 。
示例:
示例 1:
输入: s = "abcde", goal = "cdeab"
输出: true
示例 2:
输入: s = "abcde", goal = "abced"
输出: false
思路解析:
若goal是s旋转所得,则可以找到子串s1、s2,使得s = s1s2,goal=s2s1。
s + s = s1s2s1s2,可以找到子串goal(s2s1)。
代码:
class Solution {
public:
bool rotateString(string s, string goal) {
if (s.length() != goal.length()) {
return false;
}
return (s+s).find(goal) != string::npos;
}
};