字符模式匹配中有一句代码是i=i-j+2
(我实在是脑子没转过弯。一直在想这是咋来的) (手机查看可能下面没对齐 见谅)
i=6
a b a b c a b c b a
a b c b
j=4
i=3
a b a b c a b c b a
a b c b
j=1
这里i=3就是我疑惑的点了,是怎么算的?i=i-(j-1)+1=i-j+2
在i=6,j=4时,模式串与主串不匹配,因此,就要i回退到i=3的位置上去,此时已经匹配了模式串的前j-1个字母,也就是主串中匹配了j-1个元素了,但下一次匹配还要从原来匹配的起始位置的下一个元素开始匹配,因此还要+1。