zoukankan      html  css  js  c++  java
  • 最长回文子串(Longest Palindromic Substring)

    这算是一道经典的题目了,最长回文子串问题是在一个字符串中求得满足回文子串条件的最长的那一个。常见的解题方法有三种:

    (1)暴力枚举法,以每个元素为中心同时向左和向右出发,复杂度O(n^2);

    (2)动态规划法,复杂度O(n^2)。设f[i][j]表示[i,j]之间最长回文子串,递推方程见链接

    对于暴力枚举的方法,这里有一个简单的Java实现,要好好理解。

        public String longestPalindrome(String s) {
            int start = 0, end = 0;
            int maxLen = 1;
            for (int i = 0; i < s.length(); i++) {
                int left = i;
                int right = i;
                while (left > -1 && right < s.length() && s.charAt(left) == s.charAt(right)) {
                    left--;
                    right++;
                }
                if (maxLen < right - left + 1) {
                    maxLen = right - left + 1;
                    start = left + 1;
                    end = right - 1;
                }
    
                left = i;
                right = i + 1;
                while (left > -1 && right < s.length() && s.charAt(left) == s.charAt(right)) {
                    left--;
                    right++;
                }
                if (maxLen < right - left + 1) {
                    maxLen = right - left + 1;
                    start = left + 1;
                    end = right - 1;
                }
    
            }
            return s.substring(start, end + 1);
        }
    

      

  • 相关阅读:
    Windows安装Oracle
    MySQL索引的创建和使用
    使用TensorFlow进行中文情感分析
    gensim库word2vec使用
    软件测试理论
    产品经理
    产品经理
    产品经理
    职业规划及核心竞争力
    项目管理
  • 原文地址:https://www.cnblogs.com/fangying7/p/4904925.html
Copyright © 2011-2022 走看看