求最大回文子串(马拉车算法) On复杂度

string Manacher(string s){
    string t="$#";
    for (int i=0;i p(t.size(),0);
    int mx=0,id=0,reslen=0,rescenter=0;
    for (int i=0;ii?min(p[2*id-i],mx-i):1;
        while (t[i+p[i]]==t[i-p[i]]) p[i]++;
        if (mx

基本思想是利用之前求出的结果对当前计算进行优化。另一个重要的点是在原串中插入#使我们能统一讨论奇偶长度的串,不用分类。

你可能感兴趣的:(求最大回文子串(马拉车算法) On复杂度)