题目描述
给定两个字符串, 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 由小写英文字母组成
解题思路
扫描字符串s中goal的第一个字符出现的位置索引,该索引代表下一次旋转的次数(如果索引为-1,即没有找到该字符,直接返回false),每次旋转完后进行比较,相等则返回true,直到总旋转次数大于等于字符串s的长度,此时返回false。
class Solution {
public boolean rotateString(String s, String goal) {
int num=0;
int index=s.indexOf(goal.charAt(0));
while(num<s.length()){
if(index==-1) return false;
for(int i=0;i<index;i++){
s=s.substring(1)+s.substring(0,1); //旋转操作
num++;
}
if(s.equals(goal)) return true;
index=s.indexOf(goal.charAt(0),1);
}
return false;
}
}