题目:
字符串旋转的结果
内容:
写一个函数,判断一个字符串是否为另一个字符串旋转之后的字符串
例如:给定s1=AABCD和s2=BCDAA,返回1
给定s1=abcd和s2=ACBD,返回0.
AABCD左旋一个字符得到ABCDA
AABCD左旋两个字符得到BCDAA
AABCD右旋一个字符得到DAABC
#include<stdio.h>
#include<string.h>
void reverse(char*left,char*right)
{
char tmp=*left;
*left=*right;
*right=tmp;
left++;
right--;
}
void left_move(char arr1[],int k)
{
int len=strlen(arr1);
reverse(arr1,arr1+k);
reverse(arr1+k+1,arr1+len-1);
reverse(arr1,arr1+len-1);
}
int is_left_move(char arr1[],char arr2[])
{
int len=strlen(arr1);//旋转的可能性
int i=0;
for(i=0;i<len;i++)//6个字符6种可能性,abcdef,bcdefa,cdefab,....
{
left_move(arr1,1);//调用函数
int ret=strcmp(arr1,arr2);
if(ret==0)
return 1;
}
return 0;
}
int main()
{
char arr1[]="abcdef";
char arr2[]="cdefab";
int ret=is_left_move(arr1,arr2);
if(ret==1)
printf("Yes\n");
else
printf("No\n");
return 0;
}