next函數

Next函數講解:函數

 

Next函數:指當子串與母串在子串第j個字符(母串第i個字符)時出現了不匹配。若是不讓母串指針i回溯,只讓子串指針j回溯,此時i指針指向的母串字符應該與子串中第next[j]個字符進行匹配。所以next[j]就是當子母串不匹配後,子串指針j會指向子串中第幾個字符,而這裏的第幾個就是第j個。指針

下面分狀況講解:字符串

當j=1時,即若是當j=1時字母就不匹配,此時指針j會指向子串中第幾(next[j])個字符?咱們知道前提是若是不匹配母串指針i是不變的仍是指向不匹配的這個字符,由於子串的一個字符就不一樣因此從子串第i個字符開始的字符串指定與子串不匹配,又由於母串中第i個字符以前的字符都已經進行了匹配都不合格。因此子母串指針i與j都要日後移一位。子串中沒有匹配的字符串因此記錄該值爲0,至於其餘數行不行,我認爲只要是非正數應該均可以,這裏的0,只是個子母串不匹配的標誌位。next

當子串第j個字符與母串第i個字符不匹配時,就要分狀況了。字符

若是子串除第j個字符外的前j-1個字符中,若是有如下這種狀況,即子串前k-1個字符串與後k-1個字符串(後k-1個字符是到第j-1個字符而不是第j個字符)徹底匹配則此時子串指針j就要回溯到子串中第k個字符與母串指針i指向的母串字符進行匹配判斷。

若是子串前j-i個字符中不知足,則子串指針j回溯到第1(即next[j]=1)個字符與母串指針指向的母串字符進行匹配判斷。

相關文章
相關標籤/搜索