「字符串」Manacher算法(马拉车)/ LeetCode 05(C++)
在进行遍历的同时维护中心c,如果某字符在c的屋檐下,那么可以使用回文串的对称性质来避免重复的暴力扩散(毕竟为了得到c的回文长度时我们进行过暴力扩散了),这就是Manacher算法的思想。这是因为如果r[i]==r[ii],当初暴力扩散r[c]的时候得到的结果不可能使r[ii]超出r[c],r[i]==r[ii]时得到的r[c]长度即为情况1)我们发现ii的回文长度被c的回文长度完全覆盖,这意味着i的回文长度和ii是相等的,那么直接r[i]=r[ii]即可快速得到i的回文长度。至于i>c+r[c]-1?
原创
2024-07-09 13:16:01 ·
1685 阅读 ·
0 评论