zoukankan      html  css  js  c++  java
  • manacher hihoCoder1032 最长回文子串

    居然能够做到O(n)的复杂度求最长回文。,也是给跪了。

    以下这个人把manacher讲的很好,,能够看看

    http://blog.csdn.net/xingyeyongheng/article/details/9310555

    我就照着他的代码敲了一遍贴了个模板。。

    #include<map>
    #include<set>
    #include<cmath>
    #include<stack>
    #include<queue>
    #include<cstdio>
    #include<string>
    #include<vector>
    #include<cstring>
    #include<iostream>
    #include<algorithm>
    #include<functional>
    using namespace std;
    
    const int MX = 1e6 + 5;
    
    char s[MX * 2];//记得要开两倍
    int p[MX * 2];
    
    int manacher(char *s){
        int len = strlen(s), id = 0, ans = 0;
        for(int i = len; i >= 0; i--) {
            s[i + i + 2] = s[i];
            s[i + i + 1] = '#';
        }
        s[0] = '*';//防越界,非常重要!!
        for(int i = 2; i < 2 * len + 1; ++i) {
            if(p[id] + id > i) p[i] = min(p[2 * id - i], p[id] + id - i);
            else p[i] = 1;
            while(s[i - p[i]] == s[i + p[i]]) p[i]++;
            if(id + p[id] < i + p[i]) id = i;
            ans = max(ans, p[i] - 1);
        }
        return ans;
    }
    
    int main() {
        int T;
        scanf("%d", &T);
        while(T--) {
            scanf("%s", s);
            printf("%d
    ", manacher(s));
        }
        return 0;
    }
    


  • 相关阅读:
    linux资源监控命令详解
    c语言入门教程 / c语言入门经典书籍
    Hive存储过程实现-hpsql
    Hive集成mysql数据库
    Hive安装与配置
    Hbase shell操作总结(2)
    Hbase shell操作总结(1)
    Hbase 原理介绍
    Hbase的安装与配置
    Zookeeper工作原理(详细)
  • 原文地址:https://www.cnblogs.com/lxjshuju/p/6915897.html
Copyright © 2011-2022 走看看