next數組

首先看看next數組值的求解方法例如:
模式串 a b a a b c a c
next值 0 1 1 2 2 3 1 2
      
       next數組的求解方法是:第一位的next值爲0,第二位的next值爲1,後面求解每一位的next值時,根據前一位進行比較。首先將前一位與其 next值對應的內容進行比較,若是相等,則該位的next值就是前一位的next值加上1;若是不等,向前繼續尋找next值對應的內容來與前一位進行 比較,直到找到某個位上內容的next值對應的內容與前一位相等爲止,則這個位對應的值加上1即爲需求的next值;若是找到第一位都沒有找到與前一位相 等的內容,那麼需求的位上的next值即爲1。
       看起來很使人費解,利用上面的例子具體運算一遍。
       1.前兩位一定爲0和1。
       2.計算第三位的時候,看第二位b的next值,爲1,則把b和1對應的a進行比較,不一樣,則第三位a的next的值爲1,由於一直比到最前一位,都沒有發生比較相同的現象。
       3.計算第四位的時候,看第三位a的next值,爲1,則把a和1對應的a進行比較,相同,則第四位a的next的值爲第三位a的next值加上1。爲2。由於是在第三位實現了其next值對應的值與第三位的值相同。
       4.計算第五位的時候,看第四位a的next值,爲2,則把a和2對應的b進行比較,不一樣,則再將b對應的next值1對應的a與第四位的a進行比較,相 同,則第五位的next值爲第二位b的next值加上1,爲2。由於是在第二位實現了其next值對應的值與第四位的值相同。
       5.計算第六位的時候,看第五位b的next值,爲2,則把b和2對應的b進行比較,相同,則第六位c的next值爲第五位b的next值加上1,爲3,由於是在第五位實現了其next值對應的值與第五位相同。
       6.計算第七位的時候,看第六位c的next值,爲3,則把c和3對應的a進行比較,不一樣,則再把第3位a的next值1對應的a與第六位c比較,仍然不一樣,則第七位的next值爲1。
       7.計算第八位的時候,看第七位a的next值,爲1,則把a和1對應的a進行比較,相同,則第八位c的next值爲第七位a的next值加上1,爲2,由於是在第七位和實現了其next值對應的值與第七位相同。數組

相關文章
相關標籤/搜索