题目
给定两个字符串, A 和 B。
A 的旋转操作就是将 A 最左边的字符移动到最右边。 例如, 若 A = ‘abcde’,在移动一次之后结果就是’bcdea’ 。如果在若干次旋转操作之后,A 能变成B,那么返回True。
思路
采用递归的思路进行,每次旋转1位。思考递归终止条件,最多旋转字符串长度次数。
旋转一位思路:
采用一个临时变量来存取数组头部变量,然后从头到尾遍历数组,每一个都左移,再将临时变量赋值给数组尾部元素。这样我们完成了旋转一位的操作。
然后我们对比两个字符串,看是否相等。如果到达次数仍然两个字符串不相等,那么直接返回false。
bool rotateString(char * A, char * B){
int lenA=strlen(A);
int lenB=strlen(B);
if(lenA!=lenB) return false;
if(lenA==0&&lenB==0) return true;
int j,k;
for(j=0;j<lenA;j++){
int temp=A[0];
for(int i=1;i<lenA;i++){
A[i-1]=A[i];
}
A[lenA-1]=temp;
for(k=0;k<lenA;k++){
if(A[k]!=B[k]){
break;
}
}
if(k==lenA) return true;
}
return false;
}