您的位置:首页 > 其它

3.1 字符串移位包含问题

2013-08-31 21:32 190 查看
问题:

给定两个字符串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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: