舉例:數組
已知String str = "aaab"; 其Next數組值結果爲 0123。spa
已知String str = "babab"; 其Next數組值結果爲 01123。ci
解析:table
座標 | 1 | 2 | 3 | 4 |
模式串 | a | a | a | b |
NEXT數值 | 0 | 1 | 2 | 3 |
座標 | 1 | 2 | 3 | 4 | 5 |
模式串 | b | a | b | a | b |
NEXT數值 | 0 | 1 | 1 | 2 | 3 |
NEXT數組的求解方法是:方法
第一位的next值爲0,第二位的next值爲1,後面求解每一位的next值時,根據前一位進行比較。首先將前一位與其next值對應的內容進行比較,若是相等,則該位的next值就是前一位的next值加上1;若是不等,向前繼續尋找next值對應的內容來與前一位進行比較,直到找到某個位上內容的next值對應的內容與前一位相等爲止,則這個位對應的值加上1即爲需求的next值;若是找到第一位都沒有找到與前一位相等的內容,那麼需求的位上的next值即爲1。next
計算過程:(以第二題爲例)tab
計算3b (3b表示座標爲3的b):先比較3b的前一位2a,2a的NEXT值爲1,將2a和座標爲1的串1b比較,不相等,由於1b是第一位,因此最終3b的NEXT值爲1。di
計算4a:先比較4a的前一位3b,3b的NEXT值爲1,將3b和座標爲1的串1b比較,相等,因此最終4a的NEXT值爲(3b的NEXT值 + 1)= 2。ab
計算5b:同理計算4a,可得計算結果爲2+1=3。