1.问题描述
判断s2是否是s1的子串
2.编程分析
从s1字符串的第一个字符开始,依次与s2的字符串的各个字符比较,若均相同,则s2是s1的子串;否则再从s1的下一个字符(第二个字符)开始,依次与s2字符串的各个字符作比较…设k1,k2分别为s1串,s2串的长度,那么最后一次应从s1的第k1-k2+1个字符开始(即s1[k1-k2]),依次与s2的各个字符比较,若存在不同字符,则s2肯定不是s1的子串。
用C语言实现代码如下:
#include <stdio.h>
#include <string.h>
int main()
{
char s1[80],s2[80];
int i,j,k,k1,k2,flag;
printf("输入第一个字符串:");
gets(s1);
printf("输入第二个字符串:");
gets(s2);
k1=strlen(s1);
k2=strlen(s2);
flag=0;
i=0;
while(i<k1-k2+1&&!flag)
{
j=0;
k=i;
while(s2[j]&&s1[k]==s2[j])
{
j++;
k++;
}
if(s2[j]=='\0')
{
flag=1;
break;
}
i++;
}
if(flag==1)
printf("%s是%s的子串\n",s2,s1);
else
printf("%s不是%s的子串\n",s2,s1);
system("pause");
return 0;
}