给定两个字符串, s 和 goal。如果在若干次旋转操作之后,s 能变成 goal ,那么返回 true 。
s 的 旋转操作 就是将 s 最左边的字符移动到最右边。
例如, 若 s = 'abcde',在旋转一次之后结果就是'bcdea' 。
示例 1:
输入: s = "abcde", goal = "cdeab"
输出: true
示例 2:
输入: s = "abcde", goal = "abced"
输出: false
提示:
1 <= s.length, goal.length <= 100
s 和 goal 由小写英文字母组成
解法1:比较两个字符串的长度,在判断字符串s+s中是否有子串goal
解法2:将s中前面字符一个一个往后面移动,时间复杂度较高。
class Solution {
public:
bool rotateString(string s, string goal) {
int i=0;
int j=s.length();
while(1)
{
string a=s.substr(0,1);//储存第一个字符
s.erase(0,1);//删除第一个字符
s=s+a;//在字符串尾部加上第一个字符
if(s==goal)
{
return true;
}
i++;
if(i>j)
{
return false;
}
}
}
};