1,若第i個開始不等,移動到第i個。
直接將sub[0]與src[5]比較。01
2345
678a
bcab
abca
abca
bx
2,sub[2]與src[5]比較。01
2345
678a
bcab
abca
abca
b 看大神的**理解不了,還是按自己的思路寫乙個,繁瑣還是起碼好理解就行。
void getnext(const char * sub, int next)
else
blastequel=false;
} }}int strstrfornext(const char *src,const char *sub)
else
else
j=pnext[j];
} } delete pnext;
if ( sub2[j]=='\0')
return -1;
}int main()
{ char *p="aaaaaaaab";
char *q="yu";
int *nextres=new int[strlen(p)+1];
getnext(p,nextres);
for (int i=0;i
KMP模式匹配
有些演算法,適合從它產生的動機,如何設計與解決問題這樣正向地去介紹。但kmp演算法真的不適合這樣去學。最好的辦法是先搞清楚它所用的資料結構是什麼,再搞清楚怎麼用,最後為什麼的問題就會有恍然大悟的感覺。我試著從這個思路再介紹一下。大家只需要記住一點,pmt是什麼東西。然後自己臨時推這個演算法也是能推出...
KMP模式匹配
屌毛演算法導致我直接罷工兩天沒心情做題。kmp就是用來解決匹配問題,比如字串中找重複子串。核心就是乙個next陣列 含義 next i 即 以i為結尾的非字首字串 和 字首 能夠匹配的最大長度。沒有的話可以為0 abaabaaaa next 5 就是因為aba和 aba 相匹配,為3 如果直接列舉n...
KMP(單模式匹配)
單字串匹配,返回匹配位址 求出匹配總次數 求迴圈元,t len next len next陣列的有效範圍是 0,len len的時候,next為有效值 只需要記住next 0 1,next 1 0,這兩個條件就可以寫出求next的函式 匹配過程只需要o n 所以i的值不需要回歸。這裡曾經糾結很久,m...