力扣--动态规划5.最长回文子串

news2024/11/18 21:26:03

class Solution {
public:
    string longestPalindrome(string s) {
        // 获取输入字符串的长度
        int n = s.size();

        // 如果字符串长度为1,直接返回原字符串,因为任何单个字符都是回文串
        if (n == 1)
            return s;

        // 创建一个二维数组dp,用于记录子串是否为回文串
        vector<vector<bool>> dp(n, vector<bool>(n, false));

        // 定义两个循环变量i和j,i表示子串的起始位置,j表示子串的结束位置
        int i, j;

        // 初始化结果字符串为一个任意字符,长度为1
        string result = "a";

        // 从字符串的末尾开始向前遍历
        for (i = n - 1; i >= 0; i--) {
            for (j = i; j < n; j++) {
                // 情况1:子串只包含一个字符,一定是回文串
                if (i == j)
                    dp[i][j] = true;
                // 情况2:子串包含两个字符,判断这两个字符是否相等
                else if (i == j - 1) {
                    if (s[i] == s[j]) {
                        dp[i][j] = true;
                        // 更新结果字符串为当前长度更长的子串
                        result = result.size() <= (j - i + 1)
                                     ? s.substr(i, j - i + 1)
                                     : result;
                    }
                }
                // 情况3:子串长度大于2,判断首尾字符是否相等,并且去掉首尾字符的子串是回文串
                else {
                    if (s[i] != s[j])
                        continue;
                    dp[i][j] = dp[i + 1][j - 1];
                    if (dp[i][j] == true) {
                        // 更新结果字符串为当前长度更长的子串
                        result = result.size() <= (j - i + 1)
                                     ? s.substr(i, j - i + 1)
                                     : result;
                    }
                }
            }
        }

        // 返回找到的最长回文子串
        return result;
    }
};

时间和空间复杂度都为O(n²),还是不是非常好。

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

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

相关文章

AI生成对抗网络的解释

了解生成对抗网络 &#xff08;GAN&#xff09; 的不同方面和复杂性&#xff0c;GAN 是一种在人工智能 &#xff08;AI&#xff09; 领域内外使用的神经网络。本文将向您介绍 GAN&#xff0c;介绍什么是 GAN&#xff0c;并解释如何使用它们。 GAN简介 今天对称为 GAN 的通用模…

eclipse maven 项目导入报错

错误&#xff1a;Internal compiler error: java.lang.NullPointerException at org.eclipse.jdt.internal.compiler.apt.dispatch.AnnotationDiscoveryVisitor 环境&#xff1a;eclipse Kepler Service Release 2 ,JDK1.7 解决办法&#xff1a;编码不对&#xff0c;修改

惠海H5118舞台灯芯片方案 RGBW共阳12V/24V/36V大功率 无频闪

H5118是一款外围电路简单的多功能平均电流型LED恒流驱动器&#xff0c;适用于5-48V电压范围的非隔离式大功率恒流LED驱动领域。芯片采用了平均电流模式控制&#xff0c;输出电流精度在3&#xff05;&#xff1b;输出电流对输入输出电压以及电感不敏感&#xff1b;芯片内部集成了…

鸿蒙开发岗位,面试到底问些啥?

随着春天的脚步临近&#xff0c;一年度的面试旺季却也已开始。就在2 月 28 日&#xff0c;”智联招聘崩了“登上微博热搜。有网友感叹&#xff0c;现在找工作太难了&#xff0c;发现有这么多人在竞争更焦虑了。 对此智联招聘回应称&#xff0c;由于求职流量新高&#xff0c;服务…

XWPFDocument中XmlCursor的使用

类名&#xff1a; org.apache.xmlbeans Interface XmlCursor版本&#xff1a; 原xml代码&#xff1a; <w:p w14:paraId"143E3662" w14:textId"4167FBA7" w:rsidR"001506F2" w:rsidRPr"003F3D89" w:rsidRDefault"001506F2&qu…

神经网络实战前言(补充)

深度学习 深度学习是特殊的机器学习&#xff0c;使用复杂的、多层神经网络进行学习。深度神经网络&#xff08;DNN&#xff09;&#xff0c;每层学习的信息的复杂度是不断增加的。例如面部识别&#xff0c;第一层识别眼睛、第二层识别鼻子&#xff0c;直到所有的面部特征识别完…

算法-贪心-112. 雷达设备

题目 假设海岸是一条无限长的直线&#xff0c;陆地位于海岸的一侧&#xff0c;海洋位于另外一侧。 每个小岛都位于海洋一侧的某个点上。 雷达装置均位于海岸线上&#xff0c;且雷达的监测范围为 d&#xff0c;当小岛与某雷达的距离不超过 d 时&#xff0c;该小岛可以被雷达覆…

Crow 编译和环境搭建

Crow与其说是编译&#xff0c;倒不如说是环境搭建。Crow只需要包含头文件&#xff0c;所以不用编译生成lib。 Crow环境搭建 boost&#xff08;可以不编译boost&#xff0c;只需要boost头文件即可&#xff09;asio &#xff08;可以不编译&#xff0c;直接包含头文件。不能直接…

蜂窝物联:智慧养猪解决方案

一、现状 随着我国养猪业的不断发展&#xff0c;一线从业人员逐渐减少&#xff0c;投资者和养殖者的收益需求却越来越高。当前&#xff0c;我国养猪业正处在转型升级的关键时期&#xff0c;环境压力巨大、资源约束趋紧、“猪周期”变化莫测等问题日益凸显。而经过非瘟之后&…

代码随想录算法训练营第13天

239. 滑动窗口最大值 &#xff08;一刷至少需要理解思路&#xff09; 方法&#xff1a;暴力法 &#xff08;时间超出限制&#xff09; 注意&#xff1a; 代码&#xff1a; class Solution { public:vector<int> maxSlidingWindow(vector<int>& nums, int k…

python蚂蚁觅食 2023年12月青少年编程电子学会python编程等级考试二级真题解析

目录 python蚂蚁觅食 一、题目要求 1、编程实现 2、输入输出 二、算法分析 三、程序代码 四、程序说明 五、运行结果 六、考点分析 七、 推荐资料 1、蓝桥杯比赛 2、考级资料 3、其它资料 python蚂蚁觅食 2023年12月 python编程等级考试级编程题 一、题目要求 …

数据容器化,显著增强数据安全性

数据容器化涉及同一端点设备中的应用程序&#xff0c;这些应用程序充当唯一且隔离的数据“容器”。在数据丢失防护方面&#xff0c;可以通过将组织内经常用于处理关键数据的受信任应用程序标记为企业友好&#xff0c;将其委派为敏感信息的数据容器。然后&#xff0c;与其保护整…

科研工具分享-SCI写作课

教程地址【传送门】 所为搭建自己本地的chatGpt&#xff0c;其一就是方便&#xff0c;其二就是没有Ip休眠&#xff0c;这里解释一下&#xff0c;所为ip休眠&#xff0c;就是你长时间不用&#xff0c;就跟电脑自动休眠一样&#xff0c;你需要重新刷新一次网页 他才跟你继续聊天…

【2024泰迪杯】A 题:生产线的故障自动识别与人员配置 Python代码实现

【2024泰迪杯】A 题&#xff1a;生产线的故障自动识别与人员配置 Python代码实现 1 问题 一、问题背景 随着新兴信息技术的大规模应用&#xff0c;工业生产线的智能化控制技术日益成熟。自动生产线 可以自动完成物品传送、物料填装、产品包装和质量检测等过程&#xff0c;极…

js实现导出/下载excel文件

js实现导出/下载excel文件 // response 为导出接口返回数据&#xff0c;如上图 const exportExcel (response, fileName:string) >{const blob new Blob([response.data], {type: response.headers[content-type] //使用获取的excel格式});const downloadElement documen…

常见排序算法(C/C++)--- 动画演示

本篇将介绍一些常见的排序算法&#xff0c;如插入排序&#xff1a;直接插入排序、希尔排序&#xff1b;选择排序&#xff1a;选择排序、堆排序&#xff1b;交换排序&#xff1a;快速排序、冒泡排序&#xff1b;以及最后的归并排序。 对于以上的排序算法&#xff0c;我们总结了每…

Spring基础——SpringMVC概述

目录 MCV模式Spring MVCSrping MVC核心组件SpringMVC的Context域 参考资料 MCV模式 MVC模式是Java软件开发中非常常见的一种软件架构模式&#xff0c;该模式把项目开发分成三个基本组成部分&#xff0c;分别是Model&#xff08;模型&#xff09;&#xff0c;View&#xff08;视…

电源模块测试项目解析:浪涌测试方法、测试标准、测试要求

浪涌测试是电源模块安全性测试方法之一&#xff0c;是对电源模块进行瞬态电压和电流测试的过程。通过模拟实际运行中可能遇到的电压和电流浪涌情况&#xff0c;来检测电源模块的耐受能力。 电源模块浪涌测试标准 1. IEC 61000-4-11&#xff1a;用来评估电源模块在电压变动时的抗…

微信小程序云开发教程——墨刀原型工具入门(素材面板)

引言 作为一个小白&#xff0c;小北要怎么在短时间内快速学会微信小程序原型设计&#xff1f; “时间紧&#xff0c;任务重”&#xff0c;这意味着学习时必须把握微信小程序原型设计中的重点、难点&#xff0c;而非面面俱到。 要在短时间内理解、掌握一个工具的使用&#xf…

追寻工作与生活的和谐之道

在现代社会&#xff0c;人们往往被快节奏的工作和生活所困扰&#xff0c;如何在这两者之间找到平衡点&#xff0c;成为许多人关注的焦点。本文将为您介绍一些实用的方法和建议&#xff0c;帮助您实现工作与生活的和谐共处。 一、合理规划时间&#xff0c;提高工作效率 时间是实…