AABCD左旋一个字符得到ABCDA
AABCD左旋两个字符得到BCDAA
AABCD右旋一个字符得到DAABC
//代码中都有注释
#include <string.h>
#include <windows.h>
int xz(char s1[], char s2[], int a)
{
char c[10] = { 0 };
strcpy(c, s1);//先将sl字符串赋值到c中
//左旋
char j = s1[0];
for (int b = 0; b < a - 1; b++)
{
s1[b] = s1[b + 1];
}
s1[a - 1] = j;
if (strcmp(s1, s2) == 0)//进行字符串判断
{
return 1;
}
strcpy(s1, c);//每次旋转完如果不等于进行重新赋值
//右旋
char i = s1[a - 1];
for (int b = a - 2; b >= 0; b--)
{
s1[b + 1] = s1[b];
}
s1[0] = i;
if (strcmp(s1, s2) == 0)
{
return 1;
}
strcpy(s1, c);//这里也一样
//左旋两个字符
char g = s1[0];
char h = s1[1];
for (int u = 0; u < a - 3; u++)
{
s1[u] = s1[u + 2];
s1[u + 1] = s1[u + 3];
}
s1[a - 1] = h;
s1[a - 2] = g;
if (strcmp(s1, s2) == 0)
{
return 1;
}
else
{
return 0;
}
}
int main()
{
char s1[10] = { 0 };
scanf("%s", &s1);
char s2[10] = { 0 };
scanf("%s", &s2);
if (strlen(s1) == strlen(s2))//判断字符串长度是否等于
{
int str = strlen(s1);
int a = xz(s1, s2, str);
if (a == 1)
{
printf("s1旋转后等于s2");
}
else
{
printf("s1旋转后不等于s2");
}
}
else
printf("s1旋转后不等于s2");
return 0;
}