zoukankan      html  css  js  c++  java
  • [leetcode]Longest Palindromic Substring

    最长回文子串,存在O(n)的算法,Manacher’s Algorithm

    暂时还不会T_T,先用平方的算法做把,反正最长是1000

    f[i][j]表示,i..j这段是否是回文串

    那么 f[i][j] = true   i = j

                      s[i] == s[j]  i + 1 = j

                      s[i] == s[j] && f[i + 1] [j - 1]  i < j

    class Solution {
    public:
        string longestPalindrome(string s) {
            // Note: The Solution object is instantiated only once and is reused by each test case.
            if (s == "") return "";
            int len = s.length();
            bool f[len][len];
            memset(f , false , sizeof(bool) * len * len);
            int maxLen = 1;
            int start = 0;
            for(int i = 0 ; i < len ; i++){
                f[i][i] = true;
                for(int j = 0 ; j < i ; j++){
                    f[j][i] = s[j] == s[i] && (i - j < 2 || f[j + 1][i - 1]);
                    if(f[j][i] && i - j + 1 > maxLen){
                        maxLen = i - j + 1;
                        start = j;
                    }
                }
            }
            return s.substr(start , maxLen);
        }
    };
  • 相关阅读:
    CF 234 C Weather(粗暴方法)
    给工作赋予的新意义——Leo鉴书78
    获取集合的方法
    VS 统计代码行数
    , ,
    指针的删除动作
    C++ 名称空间
    boost::token_compress_on
    指针与引用
    容器的end()方法
  • 原文地址:https://www.cnblogs.com/x1957/p/3360656.html
Copyright © 2011-2022 走看看