最长回文子串就是一个字符串的一个子串,他从左往右读和从右往左读是一样的。
可以用 Manacher 算法来求,他的复杂度是 O(n) 。
可以看这篇文章 http://blog.csdn.net/ywhorizen/article/details/6629268
但是其中应该有一个错误(纠结了我一天。。。)
就是 这一句,文章里面是说当 Mx-i <= Mp[j] 的时候就要用到,因为后面的还没比较。
但是如图,蓝色的部分是相等的,如果红色的等于蓝色的话,那么Mx就不可能是这个值,所以红色的一定不等于蓝色的,所以说只有当 Mx-i == Mp[j] 或者是 Mx<=i 是才会用到。
时间: 2024-10-22 05:54:24