Manacher算法-最长的回文子字符串

Manacher算法处理字符串回文

算法步骤

下面进入更新P[]的步骤:

第一步,先初始化P[0]=0。

第二步,当i<strlen(str)时执行第三步,否则结束

第三步,判断P[id]+id=mx>i的值,如果为假执行第四步。否则执行第五步。

第四步,初始化P[i]=0,并且执行while(str[i+P[i]+1] == str[i-P[i]-1]) ++P[i];i++,得到所求的P[i]。

第五步,如果mx-i>P[j],则执行第六步,否则执行第七步。

第六步,P[i]=P[j],这时已经求出P[i],回到第二步。

第七步,这时P[i]>=mx-i,初始化P[i]=mx-i,并执行while(str[i+P[i]+1] == str[i-P[i]-1]) ++P[i];i++,得到所求的P[i],回到第二步。


猜你喜欢

转载自blog.csdn.net/qq_41138935/article/details/80112079