字符串匹配樸素算法的核心思想是:從待匹配字符串的首字符開始依次和模式串匹配,若匹配成功則返回位置,若匹配不成功則接着匹配下一個字符開始的串。。直到,待匹配串餘下的長度小於模式串。。。
所以這裏要頻繁的調用了求字符串長度的函數,但如果每個字符都開始求長度,整體複雜度就不是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!!!