796. 旋转字符串 - 力扣(LeetCode)
796. 旋转字符串 - 给定两个字符串, s 和 goal。如果在若干次旋转操作之后,s 能变成 goal ,那么返回 true 。 s 的 旋转操作 就是将 s 最左边的字符移动到最右边。 * 例如, 若 s = 'abcde',在旋转一次之后结果就是'bcdea' 。 示例 1: 输入: s = "abcde", goal = "cdeab" 输出: true 示例 2: 输入: s = "abcde", goal = "abced" 输出:...
看来这周是旋转周(´∇`‘’)
思路
根据题目条件可以得知,我可以不断循环左移字符串。匹配 goal 串的话,就相当于 s 串指针可以循环往右移动,可以用字串匹配暴力法。
代码
class Solution {
public:
bool rotateString(string s, string goal) {
// 循环左移字符串 + 字符串匹配
int sLen=s.size();
if(sLen!=goal.size()){
// 长度不相同那肯定就不行了
return false;
}
int numMatches=0;
for(int i=0;i<sLen;i++){
int p=i;
for(int j=0;j<goal.size();j++){
if(goal[j]!=s[p]){
// 失配
numMatches=0;
break;
}
numMatches++;
p=(p+1)%sLen;
}
if(numMatches==sLen){
// 全部匹配了
return true;
}
}
return false;
}
};
2 个帖子 - 2 位参与者