這裏是一個普遍實現類似的efficent版本的strstr
int stridx (char[] src, char[] str){
int i,j,k;
for(i=0;i < (src.len - str.len);i++){
for(j=i,k=0; str[k] != '\0' && str[k] == src[i]; j++,k++);
if(k> 0 && str[k]=='\0') return i;
}
return -1;
}
算法的最壞情況可能是n^2,如果我們有aaaaaaaaaaaaaaaaaaaaaaaa(假設src和STR很長,長度他們非常接近)。
我可以有更好的算法嗎?
它是'O(nk)',而不是'O(n^2)'。我認爲你的情況需要'我<= src.len-str.len'。但你的問題是什麼? –
你的問題是什麼? – bdonlan