字符串匹配老是性能瓶颈?KMP 算法的思路还挺妙的,适合用在你想精准定位子串又不想做无脑暴力匹配的时候。它的精髓在于构建next 数组,用来跳过已经匹配过的部分,减少回溯。

匹配的流程像“带着记忆”的搜索,一旦匹配失败,直接跳过没必要的字符,效率挺高的,适合写编辑器、搜索引擎那类需要高频查找的场景。

文档里的也还不错,举了 abaabcac 的例子,next 数组一位一位推导,思路挺清晰。你要是第一次接触 KMP,照着这个例子走一遍就通了。

还有两个函数你得注意写清楚:一个是构建next数组的,另一个是用它来匹配字符串的。别写混了,结构清晰一点,调试起来轻松不少。

哦对了,文档后面还顺带推荐了几个其他算法,比如Sunday 算法Vagner-Fischer这些,也都可以按需看看,扩展一下思路。

如果你最近在搞字符串相关的项目,这份文档可以当做一个不错的速查资料,代码简洁,也接地气,值得收藏。