判断一个字符串是否为另外一个字符串旋转之后的字符串。
写一个函数,判断一个字符串是否为另外一个字符串旋转之后的字符串。
例如:给定s1 =AABCD和s2 = BCDAA,返回1
给定s1=abcd和s2=ACBD,返回0.
AABCD左旋一个字符得到ABCDA
AABCD左旋两个字符得到BCDAA
AABCD右旋一个字符得到DAABC
1.先了解字符串旋转的算法
1.将需要左旋的字符串放到第三变量
2.将剩余的字符往前移动,左旋其他的字符.
3.将第三变量里的字符放到最后的位置
判断是否是字符串左旋后的字符串思路
1.先将字符串1旋转
2.在与字符串2进行判读
完整代码如下
int if_move(char* str1, char* str2)
{
int len = strlen(str1);
int i = 0;
//一开始判断字符串是不是判断一个字符串是否为另外一个字符串旋转之后的字符串
if (strcmp(str1, str2) == 0)
{
return 1;
}
//不是的话,就会来到这里
for (i = 0; i < len; i++)
{
char temp = *str1;//1.将需要左旋的字符串放到第三变量
int j = 0;
for (j = 0; j < len - 1; j++)
{
*(str1 + j) = *(str1 + j + 1);//2.将剩余的字符往前移动
}
*(str1 + len - 1) = temp;//3.将第三变量里的字符放到最后的位置
//最后在判断是不是判断一个字符串是否为另外一个字符串旋转之后的字符串
if (strcmp(str1, str2) == 0)
return 1;
}
return 0;
}
int main()
{
char str1[100];
char str2[100];
printf("请输入第一个字符串:>");
gets(str1);
printf("请输入第二个字符串:>");
gets(str2);
int ret=if_move(str1, str2);
printf("ret=%d\n",ret);
return 0;
}