思路
- 递归每次旋转的开始位置往后移一位,判断两个字符是否相等
代码
#include<stdio.h>
#include<string.h>
#include<stdbool.h>
bool rotateS(char *s,char *goal,int l){
int len =strlen(s);
if(l==len-1)
return false;
char re[len+1];
re[len]='\0';
int i = l,j=len-1;
while (i>=0)
{
re[j--]=s[i--];
}
i =l +1;
j=0;
while (i<len)
{
re[j++]=s[i++];
}
if(strcmp(re,goal)==0)
return true;
else
return rotateS(s,goal,l+1);
}
bool rotateString(char * s, char * goal){
if(strcmp(s,goal)==0)
return true;
else
return rotateS(s,goal,0);
}
bool rotateString(char * s, char * goal){
if(strcmp(s,goal)==0)
return true;
else
return rotateS(s,goal,0);
}
int main(){
char s[]="abcde";
char g[]="abced";
int re = rotateString(s,g);
printf("re = %d\n",re);
}