1. 程式人生 > >next陣列求解

next陣列求解

求解結果

在這裡插入圖片描述

求解過程

首先 :前兩位的next值為0 和1

求下標為3的next值 :
字元a的前一位是字元b , b的next值對應的字元為a(下標為1),
但b不等於a,所以字元a的next值還為b的next值1;

求下標為4的next值 :
字元a的前一位是字元a(下標為3), a(下標為3)的next值對應的字元為a(下表為1),
a(下表為3)等於a(下標為1),所以a(下表為3)的next值加1為a(下標為4)的next值

求下標為7的next值 :
字元a的前一位是字元c,c的next值對應的字元為a, c不等於a(下標為3)
a(下標為3)的next值對應的字元為a(下標為1)
a(下表為3)等於a(下標為1)但不等於字元c
所以繼續向左尋找,導致其他情況(找不到)時,next值為1;所以a(下標為7)的next值為1;

就是一直向左 找與前一位字元相等,咋相等,前一位字元的next值對應的字元與前一位字元相等,不相等的話,再找(next值對應的字元的)(next值對應的字元),以相等那個字元的next加1獲得next值,找不到,直接使next值為1。

比較的只是前一位,加1的是相等的那個next值

摘抄 :

第一位的next值為0,第二位的next值為1,後面求解每一位next值時,根據前一位進行比較。首先將前一位與其next值對應的內容進行比較,如果相等,則該位的next值就是前一位的next值加上1;如果不等,向前繼續尋找next值對應的內容來與前一位進行比較,直到找到某個位上內容的next值對應的內容與前一位相等為止,則這個位對應的值加上1即為需求的next值;如果找到第一位都沒有找到與前一位相等的內容,那麼需求的位上的next值即為1。