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

    题目:

    给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。

    示例 1:

    输入: "babad"
    输出: "bab"
    注意: "aba" 也是一个有效答案。
    

    示例 2:

    输入: "cbbd"
    输出: "bb"
    看到这个题目,我们先来举例子来分析一下,比如:
        babad -> bab/aba //称为单核的情况
        abcbadb -> abcba  //也是单核的情况
        abcddcbaf -> abcddcba  //是双核的情况
    从上面例子的结果我们可以看出:
      1.回文子串个数有奇数和偶数,需要分开。
      2.我们可以看到回文子串是对称的。
      3.确定用中心扩展法找。
    代码如下:
    class Solution {
        private static int maxLen = 0;
        private String sub = "";
        public String longestPalindrome(String s) {
            if(s.length() == 0){
                return "";
            }
            if(s.length() == 1){
                return s;
            }
            for(int i = 0;i < s.length();i++){
                findlongestPalindrome(s,i,i);  //单核的情况
                findlongestPalindrome(s,i,i+1); //双核的情况
            }
            return sub;
        }
        
        public void findlongestPalindrome(String s,int low,int high){
            while(low >= 0 && high <= s.length() - 1){
                if(s.charAt(low) == s.charAt(high)){
                    if(high - low + 1> maxLen){
                        maxLen = high - low + 1;
                        sub = s.substring(low,high + 1);
                    }
                    low--;
                    high++;
                }else{
                    break;
                }
            }
        }
    }
    



  • 相关阅读:
    SDOI2019游记
    noi.ac309 Mas的童年
    51nod1237 最大公约数之和
    loj6074 子序列
    noi.ac89A 电梯
    51nod97B 异或约束和
    bzoj4490 随机数生成器Ⅱ加强版
    CF55D Beautiful numbers
    CF24D Broken robot
    CF226D The table
  • 原文地址:https://www.cnblogs.com/youdiaodaxue16/p/10745214.html
Copyright © 2011-2022 走看看