Manacher算法
复习(重新学习)了一遍Manacher算法,比较靠谱的一篇讲解: https://www.felix021.com/blog/read.php?2040。
主要思想:利用当前位置字符所在的已知最大回文串的对称性质,避免了对当前位置字符已知回文结构的检查。
C, R = 0, -1
for i in range(0, len(t)):
rad = min(p[2*C-i], R-i) if i <= R else 0
while i-rad-1>=0 and i+rad+1<len(t) and t[i-rad-1]==t[i+rad+1]:
rad += 1
p[i] = rad
if R < i+rad:
R = i+rad
C = i
2021-03-27 14:49:15 +0800 yajw Copy old posts A