zoukankan      html  css  js  c++  java
  • LeetCode #5 简单题(最长回文子串,manacher算法)

    题目:求最长回文子串

    题解:manacher算法,百度一堆讲解- -,我也不说了,想知道啥的自己百度去吧

    class Solution {
    public:
        string longestPalindrome(string s) {
            string manaStr = "$#";
            for (int i=0;i<s.size();i++){
                manaStr += s[i];
                manaStr += '#';
            }
            vector<int> rd(manaStr.size(), 0);
            int pos = 0, mx = 0;
            int start = 0, maxLen = 0;
            for (int i = 1; i < manaStr.size(); i++) {
                rd[i] = i < mx ? min(rd[2 * pos - i], mx - i) : 1;
                while (i+rd[i]<manaStr.size() && i-rd[i]>0 && manaStr[i + rd[i]] == manaStr[i - rd[i]])
                    rd[i]++;
                    if (i + rd[i] > mx){
                        pos = i;
                        mx = i + rd[i];
                    }
                    if (rd[i] - 1 > maxLen){
                        start = (i - rd[i]) / 2;
                        maxLen = rd[i] - 1;
                    }
                }
            return s.substr(start, maxLen);
        }
    };
  • 相关阅读:
    优化eclipse
    Servlet与jsp间的传值问题
    servlet & javabean
    Java数据类型
    CentOS 7 安装tomcat
    Nginx配置详解
    PHP文件缓存实现
    lnmp编译安装
    Php安全规范
    php编码规范
  • 原文地址:https://www.cnblogs.com/error408/p/11609895.html
Copyright © 2011-2022 走看看