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);
        }
    

      

  • 相关阅读:
    java之类的封装
    java飞机大战之子弹的自动生成
    java之线程飞机大战制作
    java线程游戏之背景图片的移动
    mysql的安装以及简单的命令符
    java之控制多幅图片
    java之线程
    JAVA之数组队列
    java之链表
    python之数据库的操作(课前准备)
  • 原文地址:https://www.cnblogs.com/fangying7/p/4904925.html
Copyright © 2011-2022 走看看