LeetCode hot100-93

https://leetcode.cn/problems/longest-palindromic-substring/description/?envType=study-plan-v2&envId=top-100-liked

5. 最长回文子串
给你一个字符串 s,找到 s 中最长的回文子串。
  1. 状态定义
    我们用一个二维数组 dp[i][j] 表示子串 s[i…j] 是否是回文:

dp[i][j] = true 表示子串 s[i…j] 是回文;
dp[i][j] = false 表示子串 s[i…j] 不是回文。
2. 状态转移方程
要判断子串 s[i…j] 是否是回文,需要满足以下两个条件:

两端字符相等:s[i] == s[j]
内部子串 s[i+1…j-1] 也是回文:dp[i+1][j-1] = true
因此状态转移方程为:
在这里插入图片描述

dp[i][j]=(s[i]==s[j]) && (j−i<2 ∣∣ dp[i+1][j−1])
如果子串长度为 1(j - i == 0),它本身是回文。
如果子串长度为 2(j - i == 1),只需判断 s[i] == s[j]。
如果子串长度大于 2(j - i > 1),还需要判断 dp[i+1][j-1] 是否为 true。

这题去遍历各种子串的循环有点意思。外层是字符串长度从1到n。内层是子串的起始位置。子串的结束位置j是i和len算出来的。

class Solution {
    public String longestPalindrome(String s) {
        int n = s.length();
        boolean[][] dp = new boolean[n][n];
        int maxLen = 1;
        int start = 0;
        for(int len = 1;len<=n;len++){
            for(int i=0;i<=n-len;i++){
                int j = i+len-1;
                if(s.charAt(i)==s.charAt(j)){
                    if(len<=2){
                        dp[i][j]=true;
                    } else{
                        dp[i][j]=dp[i+1][j-1];
                    }
                }
                if(dp[i][j] && len>maxLen){
                    maxLen = len;
                    start = i;
                }
            }
            
        }
        return s.substring(start,start+maxLen);

    }
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

C语言入门指南:从零开始的编程之路

记得我刚开始接触编程时,也像很多初学者一样充满疑惑。编程看起来很神奇,但要如何开始呢?经过多年编程经验的积累,今天和大家分享如何入门C语言编程。 C语言诞生于1972年,由Dennis Ritchie在贝尔实验室开发。它的出现彻底改变了计算机编程的历史。虽然现在有很多更新的编程语…

详解Redis的String类型及相关命令

目录 SET GET MGET MSET SETNX SET和SETNX和SETXX对比 INCR INCRBY DECR DECRBY INCRBYFLOAT APPEND GETRANGE SETRANGE STRLEN 内部编码 SET 将 string 类型的 value 设置到 key 中。如果 key 之前存在&#xff0c;则覆盖&#xff0c;⽆论原来的数据类型是什么…

SpringBoot使用 AOP 实现自定义日志记录并保存在Mysql

本文主要介绍在 Spring Boot 中使用 AOP 实现自定义日志记录并保存在 Mysql 的方法。先阐述记录日志的重要性及传统方式的弊端&#xff0c;提出新方式&#xff0c;即通过创建自定义注解、切面类等&#xff0c;将重要日志存到数据库&#xff0c;还给出了创建日志表、注解类、切面…

对golang的io型进程进行off-cpu分析

背景&#xff1a; 对于不能占满所有cpu核数的进程&#xff0c;进行on-cpu的分析是没有意义的&#xff0c;因为可能程序大部分时间都处在阻塞状态。 实验例子程序&#xff1a; 以centos8和golang1.23.3为例&#xff0c;测试下面的程序&#xff1a; pprof_netio.go package m…

CTF入门:以Hackademic-RTB1靶场为例初识夺旗

一、网络扫描 靶机ip地址为192.168.12.24 使用nmap工具进行端口扫描 nmap -sT 192.168.12.24 二、信息收集 1、80端口探索 靶机开放了80和22端口&#xff0c;使用浏览器访问靶机的80端口&#xff0c;界面如下&#xff1a; 点击target发现有跳转&#xff0c;并且url发生相应变…

腾讯云智能结构化OCR:以多模态大模型技术为核心,推动跨行业高效精准的文档处理与数据提取新时代

&#x1f3bc;个人主页&#xff1a;【Y小夜】 &#x1f60e;作者简介&#xff1a;一位双非学校的大三学生&#xff0c;编程爱好者&#xff0c; 专注于基础和实战分享&#xff0c;欢迎私信咨询&#xff01; &#x1f386;入门专栏&#xff1a;&#x1f387;【MySQL&#xff0…

SD ComfyUI工作流 根据图像生成线稿草图

文章目录 线稿草图生成SD模型Node节点工作流程工作流下载效果展示线稿草图生成 该工作流的设计目标是将输入的图像转换为高质量的线稿风格输出。其主要流程基于 Stable Diffusion 技术,结合文本和图像条件,精确生成符合预期的线条艺术图像。工作流的核心是通过模型的条件设置…

Zabbix6.0升级为6.4

为了体验一些新的功能&#xff0c;比如 Webhook 和问题抑制等&#xff0c;升级个小版本。 一、环境信息 1. 版本要求 一定要事先查看官方文档&#xff0c;确认组件要求的版本&#xff0c;否则版本过高或者过低都会出现问题。 2. 升级前后信息 环境升级前升级后操作系统CentOS…

网络安全概论——身份认证

一、身份证明 身份证明可分为以下两大类 身份验证——“你是否是你所声称的你&#xff1f;”身份识别——“我是否知道你是谁&#xff1f;” 身份证明系统设计的三要素&#xff1a; 安全设备的系统强度用户的可接受性系统的成本 实现身份证明的基本途径 所知&#xff1a;个…

LabVIEW中的“Synchronize with Other Application Instances“

在LabVIEW中&#xff0c;“Synchronize with Other Application Instances”是一个常见的提示或错误&#xff0c;通常出现在尝试并行运行多个LabVIEW实例时&#xff0c;特别是当你打开多个VI或项目时。这个问题可能影响程序的执行流程&#xff0c;导致不同实例之间的数据同步或…

OpenGL ES 01 渲染一个四边形

项目架构 着色器封装 vertex #version 300 es // 接收顶点数据 layout (location 0) in vec3 aPos; // 位置变量的属性位置值为0 layout (location 1) in vec4 aColors; // 位置变量的属性位置值为1 out vec4 vertexColor; // 为片段着色器指定一个颜色输出void main() {gl…

Maven 生命周期

文章目录 Maven 生命周期- Clean 生命周期- Build 生命周期- Site 生命周期 Maven 生命周期 Maven 有以下三个标准的生命周期&#xff1a; Clean 生命周期&#xff1a; clean&#xff1a;删除目标目录中的编译输出文件。这通常是在构建之前执行的&#xff0c;以确保项目从一个…

力学笃行(二)Qt 示例程序运行

Qt 示例程序运行 1. Qt 示例程序简介1.1 编译报错问题: qt: error: cannot open C:\Users\我的电脑\AppData\Local\Temp\main.obj.34588.15.jom for write 2. Qt 示例程序主要分类2.1 Widgets 示例2.2 Qt Quick 示例2.3 3D 示例2.4 多媒体示例2.5 网络示例2.6 数据库示例2.7 图…

机器学习基础算法 (二)-逻辑回归

python 环境的配置参考 从零开始&#xff1a;Python 环境搭建与工具配置 逻辑回归是一种用于解决二分类问题的机器学习算法&#xff0c;它可以预测输入数据属于某个类别的概率。本文将详细介绍逻辑回归的原理、Python 实现、模型评估和调优&#xff0c;并结合垃圾邮件分类案例进…

《机器学习》支持向量机

目录 结构风险&#xff08;Structural Risk&#xff09;和经验风险&#xff08;Empirical Risk&#xff09; 经验风险&#xff08;Empirical Risk&#xff09;&#xff1a; 结构风险&#xff08;Structural Risk&#xff09;&#xff1a; L0范数&#xff1a; L0范数是指向…

Converseen:全能免费批量图像处理专家

还在为繁琐的图像处理任务而烦恼吗&#xff1f;Converseen 是一款功能卓越且完全免费的批量图像处理软件&#xff0c;它以其卓越的易用性、惊人的处理速度和强大的实用性赢得了用户的广泛赞誉。无论您是专业摄影师、设计师&#xff0c;还是仅仅需要处理大量图片&#xff0c;Con…

Linux下基于最新稳定版ESP-IDF5.3.2开发esp32s3入门任务间的通讯-信号量【入门三】

继续上一篇任务创建 【Linux下基于最新稳定版ESP-IDF5.3.2开发esp32s3入门任务创建【入门二】-CSDN博客】 今天要实现再创建一个任务。【二值和互斥都进行测试】 ①、通过任务A发送一个信号量&#xff0c;另一个任务得到信号量后再发送helloworld。 ②、两个任务通过互斥信…

windows安装Elasticsearch及增删改查操作

1.首先去官网下载Elasticsearch 下载地址 我这里选择的是7.17.18 选择windows版本 下载完成后解压是这样的 下载完成后点击elasticsearch.bat启动elasticsearch服务 输入http://localhost:9200看到如下信息说明启动成功。 还有记得修改elasticsearch.yml文件&#xff0c;…

虚拟机VMware的安装问题ip错误,虚拟网卡

要么没有虚拟网卡、有网卡远程连不上等 一般出现在win11 家庭版 1、是否IP错误 ip addr 2、 重置虚拟网卡 3、查看是否有虚拟网卡 4、如果以上检查都解决不了问题 如果你之前有vmware 后来卸载了&#xff0c;又重新安装&#xff0c;一般都会有问题 卸载重装vmware: 第一…

户籍管理系统的设计与实现【源码+文档+部署讲解】

目 录 摘 要 Abstract 1 系统大概 1.1 系统背景 1.2 研究意义 1.3 本文结构 1.4 开发平台简介 1.4.1 Java语言的特点 1.4.2 J2EE概述 1.4.3 B/S结构概述 1.4.4 MySQL 1.4.5 Tomcat 1.4.6 JSP.NET 1.4.7 开发流程 1.4.8 Eclipse简介 1.4.9 of…