最长回文子串

  1. 最长回文子串

给你一个字符串 s,找到 s 中最长的回文子串。

如果字符串的反序与原始字符串相同,则该字符串称为回文字符串。

示例 1:

输入:s = "babad"

输出:"bab"

解释:"aba" 同样是符合题意的答案。

示例 2:

输入:s = "cbbd"

输出:"bb"

提示:

1 <= s.length <= 1000

s 仅由数字和英文字母组成

java 复制代码
public String longestPalindrome(String s) {
        //动态规划
        boolean[][]isPalindrome=new boolean[s.length()][s.length()];
        for(int i=0;i<s.length();i++){
            isPalindrome[i][i]=true;
        }
        //有一个需要注意的点是[0,3]取决于[1,2],因此,需要保证[1,2]先于被判断
        //[0,1],[0,2],[0,3],即上面的遍历方法无法实现这个逻辑
        //下面的遍历顺序是[0,1],[0,2],[1,2]...可以满足这个遍历顺序,因此可以计算出正确的结果
        //以上的逻辑可以从"aaaa"这个例子中得到答案
        //启示:在做动态规划时,需要验证初始化顺序
        for(int j=0;j<s.length();j++){
            for(int i=0;i<j;i++){
                if(s.charAt(i)==s.charAt(j)){
                    if(j-i<=2){
                        isPalindrome[i][j]=true;
                    }else {
                        isPalindrome[i][j]=isPalindrome[i+1][j-1];
                    }
                }
            }
        }


//        for(int i=0;i<s.length();i++){
//            for(int j=i;j<s.length();j++){
//                if(s.charAt(i)==s.charAt(j)){
//                    if(j-i<=2){
//                        isPalindrome[i][j]=true;
//                    }else {
//                        isPalindrome[i][j]=isPalindrome[i+1][j-1];
//                    }
//                }
//
//            }
//        }
        String ans="";
        int maxLen=0;
        for(int i=0;i<s.length();i++){
            for(int j=i;j<s.length();j++){
                if(maxLen<j-i+1&&isPalindrome[i][j]){
                    maxLen=j-i+1;
                    ans=s.substring(i,j+1);
                }
            }
        }
        return ans;
    }
相关推荐
流年如夢26 分钟前
单链表的应用 --> 简单通讯录的实现
android·数据结构·链表
xh didida1 小时前
算法 -- 位运算
开发语言·c++·算法
祁_z2 小时前
大模型轻量化:模型格式选型(ONNX/GGUF/TFLite) + 压缩三剑客(量化/剪枝/蒸馏)+ 大模型推理执行流程介绍
算法·机器学习·剪枝·量化·蒸馏·大模型轻量化
绛橘色的日落(。・∀・)ノ2 小时前
机器学习之手写数字识别
算法
流年如夢2 小时前
单链表Ⅲ(LeetCode)
数据结构·算法·leetcode·职场和发展
鉴生Eric2 小时前
FOR算法中的AI智能体具体如何实现频谱感知和动态信道选择?请用技术术语详细说明其决策流程
人工智能·算法
量子炒饭大师2 小时前
【优化算法】双指针算法的「义体化」重构 ——【双指针】双指针算法中的指针是如何定义的?如何使用它进行一些简单的算法?
c++·算法·重构·优化算法·双指针
通信小呆呆2 小时前
ZC序列符号同步:多径信道下的四种经典算法
算法
机器学习之心HML3 小时前
粒子群算法求解速冻食品冷链配送路径优化问题,MATLAB代码
算法·matlab·冷链配送路径优化
fie88893 小时前
基于粒子群优化(PSO)算法的带STATCOM的IEEE 30节点系统最优潮流MATLAB实现
开发语言·算法·matlab