首頁>Club>
1
回覆列表
  • 1 # 喲就是我呀

    next數組的求解方法是:

    1.第一位的next值為0

    2.第二位的next值為1

    後面求解每一位的next值時,根據前一位進行比較

    3.第三位的next值:第二位的模式串為b ,對應的next值為1;將第二位的模式串b與第一位的模式串a進行比較,不相等;則第三位的next值為1(其他情況均為1)

    4.第四位的next值:第三位的模式串為a ,對應的next值為1;將第三位的模式串a與第一位的模式串a進行比較,相同,則第四位的next值得為1+1=2

    5.第五位的next值:第四位的模式串為a,對應的next值為2;將第四位的模式串a與第二位的模式串b進行比較,不相等;第二位的b對應的next值為1,則將第四位的模式串a與第一位的模式串a進行比較,相同,則第五位的next的值為1+1=2

    6.第六位的next值:第五位的模式串為b,對應的next值為2;將第五位的模式串b與第二位的模式中b進行比較,相同,則第六位的next值為2+1=3

    7.第七位的next值:第六位的模式串為c,對應的next值為3;將第六位的模式串c與第三位的模式串a進行比較,不相等;第三位的a對應的next值為1,

    則將第六位的模式串c與第一位的模式串a進行比較,不相同,則第七位的next值為1(其他情況)

    8.第八位的next值:第七位的模式串為a,對應的next值為1;將第七位的模式串a與第一位的模式串a進行比較,相同,則第八位的next值為1+1=2

    9.第八位的next值:第八位的模式串為b,對應的next值為2;將第八位的模式串b與第二位的模式串b進行比較,相同,則第九位的next值為2+1=3

    如果位數更多,依次類推

  • 2 # 用戶3845252462615

    KMP算法的核心是利用匹配失敗後的信息,盡量減少模式串與主串的匹配次數以達到快速匹配的目的。具體實現就是通過一個next()函數實現,函數本身包含了模式串的局部匹配信息。KMP算法的時間複雜度O(m+n)。

    KMP算法是三位學者在 Brute-Force算法的基礎上同時提出的模式匹配的改進算法。Brute- Force算法在模式串中有多個字符和主串中的若干個連續字符比較都相等,但最後一個字符比較不相等時,主串的比較位置需要回退。KMP算法在上述情況下,主串位置不需要回退,從而可以大大提高效率

  • 中秋節和大豐收的關聯?
  • python怎麼實現選擇輸出?