• 最长回文子串


    题目:

    给定一个字符串 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;
                }
            }
        }
    }
    



  • 相关阅读:
    Shiro理解与总结
    spark教程(14)-共享变量
    Hive 教程(十)-UDF
    multivariate_normal 多元正态分布
    windows 安装 python 踩坑记录
    EM 算法(三)-GMM
    EM 算法(二)-KMeans
    EM 算法(一)-原理
    sklearn-GDBT
    集成学习-Boosting 模型深度串讲
  • 原文地址:https://www.cnblogs.com/youdiaodaxue16/p/10745214.html
Copyright © 2020-2023  润新知