问题:
给定两个字符串s1和s2,要求判定s2是否能够被s1做循环移位得到的字符串包含。
解法1:
最直接的方法对s1进行循环移位,再进行字符串包含判断,遍历所有可能性。
代码如下:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int isSubString()
{
char src[] = "AABBCD";
char des[] = "CDAA";
int i = 0, j = 0;
char temp = src[0];
int len = strlen(src);
for(i = 0; i < len; i++)
{
temp = src[0];
for(j = 0; j < len - 1; j++)
src[j] = src[j + 1];
src[len - 1] = temp;
if (strstr(src, des) == 0)
return 1;
}
return 0;
}
int main()
{
if(isSubString())
printf("YES!\n");
else
printf("NO!\n");
return 0;
}
解法2:
如果s2可以由s1循环移位得到,那么s2一定在s1s1上。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int isSubString()
{
char src[] = "AABBCD";
char des[] = "CDAA";
char result[20] = "";
strcpy(result, src);
strcat(result, src);
printf("%s\n",result);
if (strstr(result, des) == 0)
return 1;
else
return 0;
}
int main()
{
if(isSubString())
printf("YES!\n");
else
printf("NO!\n");
return 0;
}