如题,对于一个字符串求其最长回文子串。
直接暴力O(
N2
)
用哈希可以优化至O(
NlogN
)
Manacher算法可以达到O(N)
原理如下:
f【i】表示以i为中心延伸的最大长度(包括i)。
mx表示当前回文子串最右延伸到的地方
mid表示中点
如果是第i的点是红色的情况,则只要按下式即可求出f【i】
如果是蓝色的情况,还要暴力匹配:
然后更新一下mx即可。
代码
如题,对于一个字符串求其最长回文子串。
直接暴力O(
N2
)
用哈希可以优化至O(
NlogN
)
Manacher算法可以达到O(N)
原理如下:
f【i】表示以i为中心延伸的最大长度(包括i)。
mx表示当前回文子串最右延伸到的地方
mid表示中点
如果是第i的点是红色的情况,则只要按下式即可求出f【i】
如果是蓝色的情况,还要暴力匹配:
然后更新一下mx即可。
代码