当前位置: 首页 > article >正文

【算法|动态规划No30】leetcode5. 最长回文子串

个人主页:兜里有颗棉花糖
欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 兜里有颗棉花糖 原创
收录于专栏【手撕算法系列专栏】【LeetCode】
🍔本专栏旨在提高自己算法能力的同时,记录一下自己的学习过程,希望对大家有所帮助
🍓希望我们一起努力、成长,共同进步。
在这里插入图片描述

点击直接跳转到该题目

目录

  • 1️⃣题目描述
  • 2️⃣题目解析
  • 3️⃣解题代码

1️⃣题目描述

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

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

示例1:

输入:s = “babad”
输出:“bab”
解释:“aba” 同样是符合题意的答案。

示例2:

输入:s = “cbbd”
输出:“bb”

注意:

  • 1 <= s.length <= 1000
  • s 仅由数字和英文字母组成

2️⃣题目解析

本题目其实就是回文字串的加强版。所以这里就对本题目进行简单描述啦!!!

首先:我们要判单[i,j]区间字串时候是回文串(此步骤就是回文字串那道题目),最后我们只需要返回长度最大的回文字串就可以啦!!!

返回值:

  • s.substr(begin,len)

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.kler.cn/a/106488.html

相关文章:

  • GPIO相关的寄存器(重要)
  • Servlet⽣生命周期超级细(笔记)
  • ThriveX 博客管理系统前后端项目部署教程
  • 第1章: 初识Pillow(PIL)
  • Essential Cell Biology--Fifth Edition--Chapter one (6)
  • Wxml2Canvas小程序将dom转为图片,bug总结
  • gRPC之gateway集成swagger
  • 【C#】LIMS实验室信息管理系统源码
  • 强化学习------PPO算法
  • CSGO游戏搬砖的10个冷知识,90%的人还不知道
  • HarmonyOS 音频开发指导:使用 OpenSL ES 开发音频播放功能
  • 腾讯云学生专享云服务器介绍及购买攻略
  • 刷题笔记day03-链表
  • 知识图谱--Jena基础操作和检索推理应用
  • 工作之外看点书籍的一点体会
  • VC++程序崩溃时,使用Visual Studio静态分析dump文件
  • java面试--线程总结
  • LLM系列 | 22 : Code Llama实战(下篇):本地部署、量化及GPT-4对比
  • 中间件安全-CVE 复现K8sDockerJettyWebsphere漏洞复现
  • 国产服务器安装onlyoffice详细教程
  • Spring Cloud Config
  • [编程工具]_vimrc配置
  • Go结构体接口反射
  • 回溯法:雀魂启动!
  • 网络协议--广播和多播
  • 【pwn入门】使用python打二进制