13KMP
- 最长前后缀相同表:

匹配:
当前没有匹配上的位置对应的前缀表对应的数为1,把P位置为1的位置拉带现在没有匹配成功的位置,然后继续匹配:

当前没有匹配上的位置对应的前缀表对应的数为0,把P位置为0的位置拉带现在没有匹配成功的位置,然后继续匹配:

当前没有匹配上的位置对应的前缀表对应的数为0,把P位置为0的位置拉带现在没有匹配成功的位置,然后继续匹配:


当前没有匹配上的位置对应的前缀表对应的数为-1,把P位置为-1的位置拉带现在没有匹配成功的位置,然后继续匹配:


如果已经匹配一组成功还想继续找,就把位置为2的元素对应移动:

代码实现:
分析求出最长公共前后缀表:

如果index=5是对应的prefix=1,只需要检测第一个字母后面的字母与第6个想不想等就行:


浙公网安备 33010602011771号