//写一个函数,判断一个字符串是否为另外一个字符串旋转之后的字符串
思路:
1.弄多个字符串函数出来,当作样例来比较
2.左旋转和右旋转是一样的结果,判断一种就好了
下面是代码,代码上讲步骤
#define _CRT_SECURE_NO_WARNINGS
//写一个函数,判断一个字符串是否为另外一个字符串旋转之后的字符串。
#include <stdio.h>
#include <string.h>
void Rotate(char* arr1, char* arr3, int a, int b)
{
int n = a;
int s = a - 1;
if (a != b)
return;//如果两个函数长度都不一样就不用比较了
while (n--)//n是长度,n次内必出结果
{
if (strcmp(arr1, arr3) == 0)//比较两个函数是否相等
{
printf("相等");
break;
}
for (int j = 0; j < s; j++)//交换前后两个元素,注意这里的s是a-1,while每循环一次
//只需要交换4次位置,有点像半个冒泡循环
{
char tmp = arr1[j];
arr1[j] = arr1[j + 1];
arr1[j + 1] = tmp;
}
}
}
int main()
{
char arr1[10] = "abcde";
char arr2[10] = "abcde";
char arr5[10] = "bcdea";
char arr3[10] = "deabc";
char arr4[10] = "acedf";
int sz1 = strlen(arr1);//这是被比较的原数组
int sz2 = strlen(arr2);
int sz3 = strlen(arr3);
int sz4 = strlen(arr4);
//这里arr2是和arr1一样的,arr4和arr5是可以旋转得到,arr3是不能旋转得到
Rotate(arr1, arr3, sz1, sz3);
return 0;
}
代码缺点:用例有点少,不确实能否有效判断全部用例