判断一个字符串是否为另外一个字符串旋转之后的字符串
程序代码如下:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define N 7
void Change(char *p, char *q)
{
while (p < q)
{
char tmp = *p;
*p = *q;
*q = tmp;
p++;
q--;
}
}
void TurnLeft(char *t, int n)
{
Change(t, t+n-1);
Change(t+n, t+N-2);
Change(t, t+N-2);
}
int JudgeTurn(char *c, char *s)
{
int i = 0;
char *t = malloc(N);
if (strcmp(c, s) == 0)
{
return -1;
}
for (i = 1; i < N-1; i++)
{
strcpy(t, c);
TurnLeft(t, i);
if (strcmp(t, s) == 0)
{
return i;
}
}
return 0;
}
int main()
{
char s[10] = "\0";
int ret = 0;
char c[N] = "abcdef";
printf("原字符串:%s\n", c);
printf("请输入一串字符:\n");
scanf("%s", &s);
ret = JudgeTurn(c,s);
if (ret == 0)
{
printf("该字符串不是原字符串旋转后字符串\n");
}
else if (ret == -1)
{
printf("该字符串与原字符串相等\n");
}
else
{
printf("该字符串由原字符串左旋%d个字符,\n", ret);
printf("\t\t或右旋%d个字符后得到\n", N - 1 - ret);
}
return 0;
}
程序运行结果如下:



866

被折叠的 条评论
为什么被折叠?



