摘要:
Manacher算法可以在O(n)的时间复杂度解决最长回文串问题。 字符串预处理 为了避免讨论奇偶性,首先对原始字符串进行预处理,也就是在每个字符间隙加上#,即将aab变为#a#a#b#。当指向#时,代表回文串长度为偶数,否则为奇数。 string t = "#"; for (char c : s) 阅读全文
摘要:
KMP算法用于解决字符串匹配问题,时间复杂度为O(m + n)。设s为待匹配字符串,'p'为m为模版字符串。'm'为s的长度,n为p的长度) 运用前后缀性质减少重复比较 从上图可以看出,当b与f失配时,与朴素暴力解法中直接将p后移一位继续比较不同,KMP方法利用p中存在的最长公共前后缀aa省略了重复 阅读全文