kmp介绍
对于串s = “abcdefg…” (s[0]s[1]s[2]…s[n-1])
next[n-1](n > 2,next[0] = -1,next[1] = 0)的直观寻找过程应该是:
1,先比较s[0]s[1]s[2]…s[n-3]和s[2]s[3]…s[n-2]是否相同,若相同,则next[n-1] = n-2;若不同进入2.
2,比较s[0]s[1]s[2]…s[n-4]和s[3]s[4]…s[n-2]是否相同,若相同,则next[n-1] = n-3,若不同,进入3,
3,…
…
n-2,比较s[0]和s[n-2],若相同,则next[n-1] = 1,若不同,next[n-1] = 0;
对于串s;
一:s = “a”,next[0] = -1;
二:s = “aa”,next[0] = -1,next [1] = 0;
三:s = “aaa”,next[0] = -1,next[1] = 0,next[2] = 1;
N:s为n个a,next[0] = -1,next[1] = 0,next[2] = 1,…next[n-1] = n - 2;
注意:有的时候当s长度为n时,需要用到next[n],这时我们可把next[n]看s’(在s的末尾再随便加一个字符)的next[n],如上面例子中的二,next[2] = 1;三,next[3] = 2;
kmp算法中next的介绍
最新推荐文章于 2023-03-22 22:44:22 发布