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

004最长回文子串

在这里插入图片描述在这里插入图片描述
#include
#include
#include

using namespace std;

class Solution {
public:
string longestPalindrome(string s) {
int n = s.size();
if (n < 2) {
return s;
}

    int maxLen = 1;
    int begin = 0;
    // dp[i][j] 表示 s[i..j] 是否是回文串
    vector<vector<int>> dp(n, vector<int>(n));
    // 初始化:所有长度为 1 的子串都是回文串
    for (int i = 0; i < n; i++) {
        dp[i][i] = true;
    }
    // 递推开始
    // 先枚举子串长度
    for (int L = 2; L <= n; L++) {
        // 枚举左边界,左边界的上限设置可以宽松一些
        for (int i = 0; i < n; i++) {
            // 由 L 和 i 可以确定右边界,即 j - i + 1 = L 得
            int j = L + i - 1;
            // 如果右边界越界,就可以退出当前循环
            if (j >= n) {
                break;
            }

            if (s[i] != s[j]) {
                dp[i][j] = false;
            } else {
                if (j - i < 3) {
                    dp[i][j] = true;
                } else {
                    dp[i][j] = dp[i + 1][j - 1];
                }
            }

            // 只要 dp[i][L] == true 成立,就表示子串 s[i..L] 是回文,此时记录回文长度和起始位置
            if (dp[i][j] && j - i + 1 > maxLen) {
                maxLen = j - i + 1;
                begin = i;
            }
        }
    }
    return s.substr(begin, maxLen);
}

};


http://www.kler.cn/a/449494.html

相关文章:

  • Cherno C++学习笔记 P46 箭头运算符
  • 【CryptoJS库AES加密】
  • git clone必须使用sudo否则失败 git推送错误想再次编辑和推送
  • 智能座舱进阶-应用框架层-Jetpack主要组件
  • 叉车作业如何确认安全距离——UWB测距防撞系统的应用
  • JavaScriptEs6 - String类和Array类扩展内容
  • ABAQUS纤维混凝土冲击破坏三维模型
  • 苏黎世联邦理工学院与加州大学伯克利分校推出MaxInfoRL:平衡内在与外在探索的全新强化学习框架
  • C++ 中的多线程与并发编程:从基础到进阶
  • Apache RocketMQ 5.1.3安装部署文档
  • QT多媒体开发(一):概述
  • 数据流图和流程图的区别
  • Vue.js 表单处理
  • 3.1、SDH的5种标准容器
  • CentOS常见命令
  • Note2024122001_Excel按成绩排名
  • 【YashanDB知识库】insert语句有编码不识别字,执行卡住问题
  • 掌握命令行参数的艺术:Python的`argparse`库
  • Java 连接 FTP 服务器全解析
  • 35道面向初中级前端的基础面试题
  • 汉塔上网行为管理 ping.php 远程命令执行漏洞复现(附脚本)
  • 计算机毕设-基于springboot的校园招聘网站的设计与实现(附源码+lw+ppt+开题报告)
  • Python毕业设计选题:基于Python的社区爱心养老管理系统设计与实现_django
  • VScode中配置ESlint+Prettier详细步骤(图文详情)
  • 重温设计模式--建造者模式
  • 基于矩阵乘积态的生成模型:量子力学与生成任务的结合