KMP算法中求next數組,nextval數組的方法

一、求next數組的值:

  1. 第一位的next值必爲0,第二位的next值必爲1;
  2. 前一位字符與其next值對應的字符比較,若相等,則該位的next值就是前一位的next值加1;
  3. 若不等,向前繼續尋找對應的字符與前一位進行比較,直到找到某位上的內容的next值對應的內容與前一位相等爲止,則這個位對應的next值加1即爲所求next值;
  4. 若找到第一位都沒有與前一位相等的內容,那麼所求的位上的next值爲1

二、求nextval數組的值:

  1. 第一位的nextval值必爲0,第二位若與第一位相等則爲0,不等則爲1;
  2. 當前位字符與其next值對應的字符比較,若不等,則該位的nextval值就是當前位的next值;
  3. 若相等,向前繼續尋找對應的字符與當前位相比較,直到找到某位上的內容的next值對應的內容與當前位不等爲止,則這個位對應的next值即爲所求nextval值;
  4. 若找到第一位都沒有與當前位不等的內容,那麼所求的位上的nextval值爲0

三、 求next數組的方法與求nextval數組的方法進行對比:

  1. next前兩位值固定;nextval第一位值固定。
  2. next求的是與前一位字符相等的情況;nextval求的是與當前位字符不等的情況。
  3. next找到相等情況時,那一位的next要加1;nextval找到不等情況時,那一位的next值即爲nextval的值;
  4. next未找到相等情況,next值爲1;nextval未找到不等情況,next值爲0。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章