首页 > 其他 > 详细

[模板]-Manacher

时间:2021-02-02 23:36:55      阅读:40      评论:0      收藏:0      [点我收藏+]
string Manacher(string s)
{
    string t = "$#";
    for(int i=0;i<s.size();i++)
    {
        t+=s[i];
        t+="#";
    }
    vector<int>p(t.size(),0); 
    int mx=0,id=0,reCenter=0,reLen=0;
    for(int i=1; i<t.size(); i++)
    {
        p[i]=mx>i?min(mx-i,p[2*id-i]):1;
        while(t[i+p[i]]==t[i-p[i]]) p[i]++;
        if(i+p[i]>mx)
        {
            mx=i+p[i];
            id=i;
        }
        if(p[i]>reLen)
        {
            reLen=p[i];
            reCenter=i;    
        }
    }
    return s.substr((reCenter-reLen)/2,reLen-1);
}

[模板]-Manacher

原文:https://www.cnblogs.com/YangKun-/p/14364564.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!