动态规划-回文串问题——5.最长回文子串

news2024/12/24 21:56:51

1.题目解析

题目来源:5.最长回文子串——力扣 

测试用例 

2.算法原理

1.状态表示

判断回文子串需要知道该回文子串的首尾下标,所以需要一个二维数组且数据类型为bool类型来存储每个子字符串是否为回文子串,

即dp[i][j]:以第i个位置为起始,第j个位置为结尾的子字符串是否为回文子串

2.状态转移方程

当需要判断的子字符串长度小于3可以直接判断是否相等,相等则直接为true,反之则为false

当长度大于3时则需要向中间判断,也就是将长字符串拆分为单个字符穿与两个字符串的情况即可

3.初始化

无需初始化,因为dp表存储的值为bool类型,因此在填表的过程中就动态的将每个位置赋了值

4.填表顺序

因为需要可能用到dp[i+1][j-1]也就是二维表的左下位置,因此需要从下向上填表

5.返回值

这里的dp表每个位置存储的都是该子字符串是否为回文子串,因此需要逐个判断找出最长的回文子串并求出其起始位置与长度,然后返回该子字符串即可

3.实战代码

代码分析 

class Solution {
public:
    string longestPalindrome(string s) 
    {
        int n = s.size();
        vector<vector<bool>> dp(n,vector<bool>(n));
        int len = 1,begin = 0;
        for(int i = n - 1;i >= 0;i--)
        {
            for(int j = i;j < n;j++)
            {
                if(s[i] == s[j])
                {
                    dp[i][j] = i + 1 < j ? dp[i+1][j-1] : true;
                }

                if(dp[i][j] && j - i + 1 > len)
                {
                    len = j - i + 1;
                    begin = i;
                }
            }
        }   
        return s.substr(begin,len);
    }
};

 

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

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

相关文章

源代码安全管理:深信达SDC沙盒技术解密

在数字化时代&#xff0c;源代码安全管理的重要性日益凸显&#xff0c;它不仅关系到企业的核心竞争力&#xff0c;更是企业智慧成果的结晶。深信达的SDC沙盒防泄密软件以其独特的技术优势&#xff0c;为源代码安全提供了全方位的保护。 源代码安全管理的重要性 源代码作为企业…

Virtuoso使用layout绘制版图、使用Calibre验证DRC、LVS、PEX抽取RC

1 绘制版图 1.1 进入Layout XL 绘制好Schmatic后&#xff0c;在原理图界面点击Launch&#xff0c;点击Layout XL进入版图绘制界面。 1.2 导入元件 1、在Layout XL界面左下角找到Generate All from Source。 2、在Generate Layout界面&#xff0c;选中“Instance”&#…

YOLO11改进 | Neck | 有效提升小目标检测效果,附完整代码结构图【论文必备】

秋招面试专栏推荐 &#xff1a;深度学习算法工程师面试问题总结【百面算法工程师】——点击即可跳转 &#x1f4a1;&#x1f4a1;&#x1f4a1;本专栏所有程序均经过测试&#xff0c;可成功执行&#x1f4a1;&#x1f4a1;&#x1f4a1; 本文给大家带来的教程是将YOLO11的卷积替…

vue文件转AST,并恢复成vue文件(适用于antdv版本升级)

vue文件转AST&#xff0c;并恢复成vue文件---antdvV3升级V4 vue文件转AST&#xff0c;重新转回原文件过程如何获取项目路径读取项目文件&#xff0c;判断文件类型分别获取vue文件 template js&#xff08;vue2和vue3&#xff09;处理vue 文件template部分处理vue script部分uti…

【染色时间】

题目 代码 #include <bits/stdc.h> using namespace std; #define x first #define y second typedef pair<int,int> PII; const int N 510; int dx[] {0,0,-1,1}, dy[] {-1,1,0,0}; int d[N][N], w[N][N]; int n, m; void bfs() {memset(d, 0x3f, sizeof d);q…

蓝牙 BLE 详解

参考链接 BLE博客书籍推荐&#xff1a;Intro to Bluetooth Low Energy: The easiest way to learn BLE

QT项目-仿QQ聊天(带宠物系统)

目录 一&#xff0c;项目介绍 二&#xff0c;开发环境 三&#xff0c;涉及技术 四&#xff0c;项目效果示例图 1&#xff0c;登录界面 2&#xff0c;主界面 3&#xff0c;聊天界面 4&#xff0c;功能界面 5&#xff0c;宠物界面 一&#xff0c;项目介绍 这是一个基于u…

【Linux内核大揭秘】程序地址空间

文章目录 什么是程序地址空间地址空间的组成虚拟内存技术 如何理解程序地址空间页表页表的细节关于堆区 在Linux中如何查看各个分段的信息总结 什么是程序地址空间 程序地址空间是一个程序在执行期间可以访问的内存范围。它由操作系统为每个进程分配&#xff0c;以确保进程之间…

资深项目经理推荐的这五款国产项目管理软件值得收藏使用

随着国产项目管理软件的发展&#xff0c;国内也涌现了一批优秀的项目管理软件&#xff0c;他们在各个领域都非常出色&#xff0c;国产项目管理软件在安全性和网络访问上是国外产品无法比拟的&#xff0c;像进度猫、建文、新页等&#xff0c;以下推荐五款国产项目管理软件&#…

[POI2014] PTA-Little Bird(单调队列优化 DP)

luogu 传送门https://www.luogu.com.cn/problem/P3572 解题思路 先设 表示到 的最小劳累值。 很容易得出转移&#xff1a; 其中 由 和 的大小关系决定&#xff0c;并且 。 很显然&#xff0c;直接暴力是 的&#xff0c;会超时。 于是&#xff0c;考虑优化。 我们发现…

python--函数详解二

一、作用域&#xff1a; 一个标识符的可见范围&#xff0c;这就是标识符的作用域&#xff0c;一般说的是变量的作用域 1.1、全局作用域 运行结果 在整个程序运行环境中可见。可以被多个函数重复多次使用 1.2、局部作用域 运行结果 这里调用a&#xff0c;显示未定义&#xff…

LeetCode 3165. 不包含相邻元素的子序列的最大和

. - 力扣&#xff08;LeetCode&#xff09; 题目 给你一个整数数组 nums 和一个二维数组 queries&#xff08;维&#xff09;&#xff0c;其中 queries[i] []。 对于每个查询 i&#xff0c;首先将 nums[] 设置为 &#xff0c;然后计算查询 i 的答案&#xff0c;该答案为 nu…

基于无框力矩电机抱闸实现人形机器人在展会中不依赖悬吊

目录&#xff1a; 1 人形机器人在展会中的悬吊状态 2 人形机器人不能长时间站立的原因 3 基于电机抱闸使人形机器长时间站立 4 人形机器人在实用场景中必须长时间站立、快速进行 “静-动” 互换 5 人形机器人在实用场景中实现 “静-动” 快速互换的抱闸控制思路 6 无框力…

Rust 力扣 - 2090. 半径为 k 的子数组平均值

文章目录 题目描述题解思路题解代码题目链接 题目描述 题解思路 半径为 k 的子数组平均值 等价于 子数组长度为2 * k 1的总和 除于 2 * k 1 我们遍历长度为2 * k 1的窗口&#xff0c;我们只需要记录窗口内的平均值即可 题解代码 impl Solution {pub fn get_averages(num…

哪些远程控制软件能高清畅玩黑神话?

远程控制软件近年来越来越普及&#xff0c;这类软件使用场景广泛&#xff0c;包括远程办公、技术支持、教育等。但其实除了协助远程办公之外&#xff0c;对于游戏玩家来说&#xff0c;远程操控软件还是一款能够让他们即使身处异地也能享受到流畅的游戏体验的好工具。利用远程控…

qt QComboBox详解

QComboBox是一个下拉选择框控件&#xff0c;用于从多个选项中选择一个。通过掌握QComboBox 的用法&#xff0c;你将能够在 Qt 项目中轻松添加和管理组合框组件&#xff0c;实现复杂的数据选择和交互功能。 重要方法 addItem(const QString &text)&#xff1a;将一个项目添…

架构师备考-数据库基础

基本概念 数据&#xff08;Data&#xff09;&#xff1a;是描述事物的符号记录&#xff0c;它具有多种表现形式&#xff0c;可以是文字、图形、图像、声音和语言等。信息&#xff08;information&#xff09;&#xff1a;是现实世界事物的存在方式或状态的反映。信息具有可感知…

【牛客刷题实战】二叉树遍历

大家好&#xff0c;我是小卡皮巴拉 文章目录 目录 牛客题目&#xff1a; 二叉树遍历 题目描述 输入描述&#xff1a; 输出描述&#xff1a; 示例1 解题思路 问题理解 算法选择 具体思路 解题要点 完整代码&#xff08;C语言&#xff09; 兄弟们共勉 &#xff01;&…

ESP-HaloPanel:用 ESP32-C2 打造超低成本智能家居面板

项目简介 在生活品质日益提升的今天&#xff0c;智能家居系统已经走进了千家万户&#xff0c;并逐渐成为现代生活的一部份。与此同时&#xff0c;一款设计精致、体积轻盈、操作简便的全屋智能家居控制面板&#xff0c;已经成为众多家庭的新宠。这种高效、直观的智能化的解决方…

西北工业大学Journal of Applied Ecology最新研究进展:野生食草动物破坏了干旱自然保护区的土壤种子库及植被恢复潜力

本文首发于“生态学者”微信公众号&#xff01; 自然保护区&#xff08;protected areas&#xff09;是全球生物保护的重要支柱。其中&#xff0c;植物是生物多样性和生态系统的核心组成部分&#xff0c;是实现生物保护目标的前提和基础。土壤种子库&#xff08;soil seed ban…