2.使用字符串库函数解决
使用此方法需要注意到一个规律:
一个字符串后面再接一个和自身相同的字符串后,此字符串中就出现了所有旋转可以得到的结果。
eg:
A B C D A B C D,其中有所有的“ABCD”旋转结果,BCDA(2~5),CDAB(3~6),DABC(4~7)。
所以做法就是利用库函数将原字符串拼接一个自身,再在字符串中查找需要判断的字符串即可。
源代码:
#include<stdio.h>
#include<string.h>
int judge(char *str1, char *str2)
{
strncat(str1, str1, strlen(str1));//原字符串拼接本身
char *result = strstr(str3, str2);//查找目标字符串
if (result == NULL)
{
return -1;
}
else
{
return 0;
}
}
int main()
{
char str1[] = "ABCDE";
char str2[] = "CDEAB";
char str3[] = "DEBAC";
int result = judge(str1, str2);
if (result == -1)
{
printf("str2不是由str1旋转得到\n");
}
else
{
printf("str2是由str1旋转得到\n");
}
result = judge(str1, str3);
if (result == -1)
{
printf("str3不是由str1旋转得到\n");
}
else
{
printf("str3是由str1旋转得到\n");
}
system("pause");
return 0;
}
Linux公社的RSS地址:https://www.linuxidc.com/rssFeed.aspx