题目描述
给定两个字符串 A 和 B。
A 的旋转操作就是将 A 最左边的字符移动到最右边。 例如,若 A = 'abcde'
,在移动一次之后结果就是'bcdea'
。如果在若干次旋转操作之后,A 能变成B,那么返回True
。
示例 1:
输入: A = 'abcde', B = 'cdeab'
输出: true
示例 2:
输入: A = 'abcde', B = 'abced'
输出: false
一些解法
bool rotateString(char * A, char * B){
if (strlen(A) != strlen(B)) return false;
char* s = (char*)calloc(strlen(A)*2+1,sizeof(char));
strcat(strcat(s,A),A);
return strstr(s,B);
}
作者:13317713879
链接:https://leetcode-cn.com/problems/rotate-string/solution/cyu-yan-4xing-dai-ma-xiao-lu-gang-gang-de-by-13317/
class Solution {
public:
bool rotateString(string A, string B) {
return A.size() == B.size() && (A + A).find(B) != string::npos;
}
};
作者:da-li-wang
链接:https://leetcode-cn.com/problems/rotate-string/solution/c-yi-xing-ti-jie-by-da-li-wang-4/
bool rotateString(char * A, char * B){
int i, len = strlen(A);
if(strcmp(A, B) == 0)
return true;
for(i = 0;i < len;i++)
{
char a = A[0];
for(int j = 1;j < len;j++)
{
A[j - 1] = A[j];
}
A[len - 1] = a;
if(strcmp(A, B) == 0)
{
return true;
}
}
return false;
}
作者:fei-240
链接:https://leetcode-cn.com/problems/rotate-string/solution/cyu-yan-shuang-100-jian-dan-yi-dong-by-fei-240/
public class Solution {
public boolean solve (String A, String B) {
if(A.length()!=B.length()) return false;
return (A+A).contains(B);
}
}
class Solution:
def solve(self , A , B ):
m = len(A)
n = len(B)
if m != n:
return False
# 判断相同位置字符
for j in range(m):
# A字符串从0开始
# B字符串每逐位位置作为起始比较
if self.comp(A, B, 0, j):
return True
# 不一样
return False
# 逐位比较字符串
def comp(self, string, move, i, j):
length = len(string)
# 逐位比较 j索引使用%来旋转
while i < length and string[i] == move[j%length]:
i += 1
j += 1
# 匹配完整性判断
return True if i == length else False