0
点赞
收藏
分享

微信扫一扫

字符串旋转的结果

题目:

字符串旋转的结果

内容:

写一个函数,判断一个字符串是否为另一个字符串旋转之后的字符串

例如:给定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;
}

举报

相关推荐

0 条评论