字符串匹配朴素算法的核心思想是:从待匹配字符串的首字符开始依次和模式串匹配,若匹配成功则返回位置,若匹配不成功则接着匹配下一个字符开始的串。。直到,待匹配串余下的长度小于模式串。。。
所以这里要频繁的调用了求字符串长度的函数,但如果每个字符都开始求长度,整体复杂度就不是O(mn)了,而是O(n2)。。。
其实也不用这样,初始的时候求一下长度,就可以了。。。
{
int len1 = strlen(str);
int len2 = strlen(temp);
int i=0;
while(len1-i >= len2)
{
int j;
for(j=0;j<len2 && str[i+j] == temp[j];j++);
if(j==len2)
return i;
i++;
}
printf("no match!\n");
return -1;
}
OVER!!!