考虑最坏的情况,每次到最后一个字母,匹配不成功,则总共执行(n-m+1)*m 次,复杂度o(n*m)
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define maxn 111
typedef struct
{
char str[maxn];
int len;
}seqstring;
int index(seqstring s,seqstring t)
{
int i,j,k,flag = 0;
for(i=0;i<s.len;i++)
{
k=i;
j=0;
while(j<t.len)
{
if(s.str[k++]==t.str[j++]) flag = 1;
else
{
flag =0;
break ;
}
}
if(flag) break;
}
if(flag) return 1;
else return 0;
}
int main()
{
seqstring s,t;
int flag;
scanf("%s%s",s.str,t.str);
s.len=strlen(s.str);
t.len=strlen(t.str);
flag = index(s,t);
if(flag) printf("字符串匹配成功\n");
else printf("字符串匹配失败\n");
return 0;
}