#include<stdio.h>
#include<stdlib.h>
#include<string.h>
//判断字符串s1能否循环移位得到s2
//方法一,循环移位比较
int main()
{
char s1[]="aabbcd";
char s2[]="cdaa";
int len1 = strlen(s1);
int len2 = strlen(s2);
int i,j;
char ch;
for(i = 0;i<len1;i++)
{
ch = s1[0];//保存第一个。
for(j = 1;j<len1;j++)
{
s1[j-1] = s1[j];//移位
}
s1[j-1] = ch;
if(strstr(s1,s2) != NULL)//比较移位后的结果
{
printf("可以通过s1循环移位得到s2\n");
printf("%s\n",s1);
printf("%s\n",s2);
return 0;
}
}
return 0;
}
//方法二,将s1s1组成字符串,如果s1s1里面含有s2,则s2能通过s1循环移位得到
int main()
{
char s1[]="aabbcd";
char s2[]="cdaa";
int len = strlen(s1);
char* p = (char*)malloc(sizeof(char)*(2*len+1));
p[2*len] ='\0';
for(int i = 0; i<len;i++)
{
p[i] = p[i+len] = s1[i];
}
if(strstr(p,s2) != NULL)
{
printf("可以通过s1循环移位得到s2\n");
}
return 0;
}
字符串移位包含问题
最新推荐文章于 2024-04-30 16:01:24 发布