学习完KMP算法才发现编程如此的奇妙
求next数组
def getNext(s): |
从这张图可以看到整个的匹配过程,如果 $p_{k}$ 和 $p_{j}$ 匹配不上,那么就去看 $p_{next[k]}$ 和 $p_{j}$
比如
p = "ABCDABD" |
得到的结果就是
[-1, 0, 0, 0, 0, 1, 2] |
细节感觉还是要靠自己体会
KMP算法
def KMP(s,p): |
从头开始匹配即可,遇到匹配不上的情况就返回到 next[k]
学习完KMP算法才发现编程如此的奇妙
def getNext(s): |
从这张图可以看到整个的匹配过程,如果 $p_{k}$ 和 $p_{j}$ 匹配不上,那么就去看 $p_{next[k]}$ 和 $p_{j}$
比如
p = "ABCDABD" |
得到的结果就是
[-1, 0, 0, 0, 0, 1, 2] |
细节感觉还是要靠自己体会
def KMP(s,p): |
从头开始匹配即可,遇到匹配不上的情况就返回到 next[k]