【Hot100】LeetCode—5. 最长回文子串

news2024/11/16 23:57:19

目录

  • 题目
  • 1- 思路
  • 2- 实现
    • ⭐5. 最长回文子串——题解思路
  • 3- ACM 实现

题目

  • 原题连接:5. 最长回文子串

1- 思路

  • 模式识别:最长回文子串——> 动规五部曲
  • 子串的概念 ——> 子串是连续的部分,区别与子序列

动规五部曲
1.定义dp数组

  • dp[i][j] 代表 [i...j] 区间内的子串是否是回文子串

2.递推公式

if(s.charAt(i)==s.charAt(j)) {
    // 单个字符 没意义
    if(j-i<3){
        dp[i][j] = true;
    }else{
        dp[i][j] = dp[i+1][j-1];
    }
}

3.初始化

  • 主对角线的单个字符全都是 true
  • 其中 dp[i][j] 参考了 当前位置 左下方的 值,因此需要注意遍历顺序

2- 实现

⭐5. 最长回文子串——题解思路

在这里插入图片描述

class Solution {
    public String longestPalindrome(String s) {
        // 1. 定义 dp 数组
        int len = s.length();

        boolean[][] dp = new boolean[len][len];

        int maxLen = 1;
        int begin = 0;

        // 2. 递推公式
        // 2.1 不等 为 false
        // 2.2 相等小于 3  true ,否则 dp[i][j] = dp[i+1][j-1];

        // 3. 初始化
        for(int i = 0 ; i < len;i++){
            dp[i][i] = true;
        }
        // 4. 遍历
        for(int j = 1;j<len;j++){
            for(int i = 0 ; i < j;i++){
                if(s.charAt(i)!=s.charAt(j)){
                    dp[i][j] = false;
                }else{
                    if(j-i<3){
                        dp[i][j] = true;
                    }else{
                        dp[i][j] = dp[i+1][j-1];
                    }
                }

                if(dp[i][j] && j-i+1 > maxLen){
                    maxLen = j-i+1;
                    begin = i;
                }
            }
        }

        return s.substring(begin,begin+maxLen);
    }

}

3- ACM 实现

public class longestPlainDrome {


    public static String longestSub(String s){
        // 1.定义 dp
        int len = s.length();
        boolean[][] dp = new boolean[len][len];
        int maxLen = 1;
        int begin = 0;

        // 2.递推公式
        // i j 不等则为 false,j-i<3 为true 否则为 dp[i][j] = dp[i+1][j-1];

        // 3.初始化
        for(int i = 0 ; i < len;i++){
            dp[i][i] = true;
        }
        // 4. 遍历顺序
        for(int j = 1 ; j < len;j++){
            for (int i = 0 ; i < j;i++){
                if(s.charAt(i)!=s.charAt(j)){
                    dp[i][j] = false;
                }else{
                    if(j-i<3){
                        dp[i][j] = true;
                    }else{
                        dp[i][j] = dp[i+1][j-1];
                    }
                }

                // max 和 begin 的更新
                if(dp[i][j] && j-i+1 >maxLen){
                    maxLen = j-i+1;
                    begin = i;
                }
            }
        }
        return s.substring(begin,begin+maxLen);
    }

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("输入字符串s");
        String s = sc.next();
        System.out.println("结果是"+longestSub(s));
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1963409.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

网络模型的使用以及修改 pytorch

VGG16_Weights.DEFAULT 或 VGG16_Weights.IMAGENET1K_V1&#xff1a;使用在 ImageNet 上训练的权重 import torchvision from torch import nnvgg16_false torchvision.models.vgg16() vgg16_true torchvision.models.vgg16(weightsDEFAULT) print(vgg16_true) train_data …

vue3项目结构梳理:

总览 1.vscode文件&#xff1a; 通常用于存放Visual Studio Code编辑器的插件的配置 2.node_moudles文件夹&#xff1a; 这个文件夹包含了项目所需的所有npm依赖包。&#xff08;需要在根目录下执行npm i命令安装这个文件夹&#xff09; 或者在项目根目录&#xff08;packa…

深度学习论文: SAM 2: Segment Anything in Images and Videos

深度学习论文: SAM 2: Segment Anything in Images and Videos SAM 2: Segment Anything in Images and Videos PDF:https://ai.meta.com/research/publications/sam-2-segment-anything-in-images-and-videos/ PyTorch: https://github.com/shanglianlm0525/PyTorch-Networks …

前端开发不得不知道的那些事

文章目录 一、技能提升篇vueuseJavaScript中文网JavaScript.infoRxJsWeb安全学习书栈网码农之家 二、UI篇iconfont&#xff1a;阿里巴巴矢量图标库IconPark3dicons美叶UndrawError 404摹克 三、CSS篇You-need-to-know-cssCSS TricksAnimate.cssCSS ScanCSS Filter 四、颜色篇中…

滑模变结构控制仿真实例(s-function代码详解)

目录 一、建立系统数学模型二、控制器设计1. 设计滑模面(切换面)2.设计控制器 u3. 稳定性证明 三、 Matlab 仿真1. s-function 模型2. 主要代码3. 仿真结果(采用符号函数sign(s))4. 仿真结果(采用饱和函数sat(s)) 一、建立系统数学模型 { x ˙ 1 x 2 x ˙ 2 x 3 x ˙ 3 x 1 …

vue3中Cesium离线地图

最近的需求需要在vue3发布Cesium离线地图&#xff0c;之前openlayers我是在本地开启http server发布的地址可以使用&#xff0c;但是Cesium会报跨域错误&#xff0c;在网上查了一下&#xff0c;后用的是nginx代理&#xff0c;下面我记录一下自己的方法。 1.判断是否联网 expo…

Linux、Windows、Mac 系统安装 Nginx 及配置命令全攻略

一、Linux 系统安装 Nginx 及配置 &#xff08;一&#xff09;安装依赖包 在 Linux 系统中安装 Nginx 前&#xff0c;首先需要安装依赖包。以下是常见的依赖包安装命令&#xff1a; yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel 若安装过程中出现错…

力扣高频SQL 50题(基础版)第三十二题

文章目录 力扣高频SQL 50题&#xff08;基础版&#xff09;第三十二题1789.员工的直属部门题目说明实现过程准备数据实现方式结果截图 力扣高频SQL 50题&#xff08;基础版&#xff09;第三十二题 1789.员工的直属部门 题目说明 表&#xff1a;Employee ------------------…

Yolov8训练时正常,但验证时Cuda out of memory问题的解决方案(非完全解决)

【问题描述】 在Yolov8训练时&#xff0c;训练中正常&#xff0c;但每轮训练中做验证时报错Cuda out of memory&#xff1a; 【解决方案】 往下翻有具体的报错信息&#xff1a; 可知是显存爆了。在没有条件更换训练显卡的情况下&#xff0c;笔者尝试增加with torch.no_grad…

TiDB Hackathon 2024丨用 TiDB 构建未来的 AI 创新应用, 瓜分超 ¥210,000 奖金池!

2024 TiDB Future App Hackathon 来啦&#xff01;这是第八届 TiDB Hackathon&#xff0c;TiDB Hackathon 自举办以来&#xff0c;已累计参赛人数超过 3000 人 &#xff01;回顾去年的 TiDB Hackathon 赛事&#xff0c;有来自 88 个国家近 1500 名小伙伴参加&#xff0c;提交了…

IDEA某个项目被同事提交的代码导致不能进入Debug了,不是IDEA的问题。千万要避坑!

刚开始我发现突然不能进入debug了&#xff0c;打上去后就立马边灰了&#xff0c;我以为是我IDEA的问题&#xff0c;后来我换了其他项目都能正常进入debug. 而且后续&#xff0c;这个项目的其他同事也都不能进入debug了。 我就怀疑是项目中有人提交了代码导致的。 后来查…

必备插件自取 vue3.0 在vscode提升编码效率

一些vue开发中用到的插件&#xff0c;抽空总结一下&#xff0c;一是方便自己查看&#xff0c;另外是供其他需要的同学参考。在开发vue项目中&#xff0c;无论用什么编辑器一些好用的插件对我们来讲或许是必要的&#xff0c;因为好的插件既能方便我们编码&#xff0c;又能提升开…

文件解析漏洞--IIS--Vulhub

文件解析漏洞 一、IIS解析漏洞 用windowserver2003安装IIS测试 1.1 IIS6.X 方法一&#xff1a;目录解析 在网站下建立文件夹的名字为.asp/.asa的文件夹&#xff0c;其目录内的任何扩展名的文件都被IIS当作asp文件来解析并执行。 1.txt文件里是asp文件的语法查看当前时间 方…

PSO求解函数最小值的MATLAB例程|MATLAB源代码

本篇文章适合PSO入门&#xff0c;进阶的可能会觉得太简单的。 目录 PSO例程作用运行结果代码函数解释 例程修改tips PSO Particle Swarm Optimization&#xff0c;粒子群优化算法&#xff0c;通过模拟鸟群或鱼群的行为来寻找最优解。在计算时通过对一群粒子的位置和速度进行迭…

Stable Diffusion Windows本地部署超详细教程(手动+自动+整合包三种方式)

2022年作为AIGC&#xff08;Artificial Intelligence Generated Content&#xff09;时代的元年&#xff0c;各个领域的AIGC技术都有一个迅猛的发展&#xff0c;给工业界、学术界、投资界甚至竞赛界都注入了新的“AI活力”与“AI势能”。 其中在AI绘画领域&#xff0c;Stable D…

内部类练习题

代码&#xff1a; public static void main(String[] args) {A anew A();a.f(); } class A{private String name"A";public void f(){class B{private String name"B";public void show(){System.out.println("A姓名为&#xff1a;"A.this.name…

智慧校园实训管理:打造高效实验项目管理系统

在智慧校园的实训管理框架中&#xff0c;实验项目管理功能是培养学生实践能力和创新精神的关键一环。这一功能通过数字化手段&#xff0c;实现了实验项目的全流程管理&#xff0c;从项目设计、资源调配、过程监控到成果评估&#xff0c;确保了实训活动的高效开展和教学质量的稳…

LabVIEW打开的视频格式IMAQ AVI Open

LabVIEW打开的视频格式IMAQ AVI Open LabVIEW所支持的视频解码器是有限的&#xff0c;不能支持所有的视频解码器。如果解码器选择的不正确&#xff0c;会出现的错误。 错误提示信息如下&#xff1a; Error -1074396009 occurred at IMAQ AVI Open Possible reason(s): An inter…

人工智能大模型发展带来的风险挑战和对策

经过近70年的发展&#xff0c;人工智能技术发展经历了三次起伏&#xff0c;2022年以来&#xff0c;以ChatGPT、Sora等为代表的预训练大模型持续取得突破&#xff0c;推动着人工智能技术从感知向认识&#xff0c;从分析判断式向生成式&#xff0c;从专用向通用进入快速发展的新阶…

提供一个下载国外DockerHub镜像的办法

由于众所周知的一些问题&#xff0c;国内现在下载国外的镜像比较难。尤其是比较新的版本的时候。 比如阿里云加速器的镜像库&#xff0c;skywalking-oap的最新版本也只有8.9&#xff0c;有时候不满足业务需要。官网目前最新10.0.1。很多情况下我们需要9以上版本。 提供几个办…