[C国演义] 第十九章

news2024/10/6 22:22:22

第十九章

  • 回文子串
  • 最长回文子串

子串, 等价于 子数组, 都要求连续

回文子串

力扣链接

  • 子串 ⇒ 状态表示

  • 子串 ⇒ 状态转移方程

  • 初始化 : 全都初始化为 false

  • 遍历顺序

  • 返回结果 : 此时的dp表中, 已经是每个区间能否是回文子串的结果了 ⇒ 我们要统计所有的回文子串的数目, 那么就是 统计dp表中为true的数量

class Solution {
public:
    int countSubstrings(string s) 
    {
        int n = s.size();

        // 建表 + 初始化
        vector<vector<bool>> dp(n, vector<bool>(n));

        // 统计结果
        int res = 0;

        for(int i = n-1; i >= 0; i--) // 固定起始位置
        {
            for(int j = i; j < n; j++) // 枚举结束位置
            {
                if(s[i] == s[j])
                {
                    if(i == j)  dp[i][j] = true;
                    else if(i+1 == j)  dp[i][j] = true;
                    else  dp[i][j] = dp[i+1][j-1];
                }

                // 统计dp表中为true的数量
                if(dp[i][j])  res++;
            }
        }

        return res;
    }
};


最长回文子串

力扣链接

  • 子串 ⇒ 状态表示

  • 子串 ⇒ 状态转移方程

  • 初始化 : 全都初始化为 false

  • 遍历顺序

  • 返回结果 : 记录最长长度 和 最长长度的起始下标 ⇒ substr

class Solution {
public:
    string longestPalindrome(string s) 
    {
        int n = s.size();

        // 建表 + 初始化
        vector<vector<bool>> dp(n, vector<bool>(n));

        // 返回结果
        int count = 0; // 记录最长长度
        int begin = 0; // 记录最长长度的起始下标

        // 填表
        for(int i = n-1; i >= 0; i--) // 固定起始下标
        {
            for(int j = i; j < n; j++) // 枚举结束下标
            {
                if(s[i] == s[j])
                {
                    if(i == j)  dp[i][j] = true;
                    else if(i+1 == j)  dp[i][j] = true;
                    else  dp[i][j] = dp[i+1][j-1];
                }

                // 更新最长长度 和 最长长度的起始下标
                if(dp[i][j] && j-i+1 > count)
                {
                    begin = i;
                    count = j-i+1;
                }
            }
        }

        // 返回结果
        string str = s.substr(begin, count);

        return str;
    }
};


铸镜须青铜,青铜易磨拭。结交远小人,小人难姑息。
铸镜图鉴微,结交图相依。凡铜不可照,小人多是非。
— — 孟郊《结交》

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

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

相关文章

PDF文件标题修改方法

目录 一、PDF文件的标题和名称 二、标题修改方法 1.浏览器打开PDF Editor Free网站 2.点击Free Oline 3.选择第三个从本地上传PDF附件 4.将附件上传&#xff0c;两种方法都可以​编辑 5.等待加载&#xff0c;附件大的情况下会有些慢&#xff0c;耐心等待即可 6. 导入文…

PyG(torch_geometric)的MessagePassing详解

1. 提出MessagePassing的目的 MessagePassing是图神经网络&#xff08;Graph Neural Networks&#xff0c;GNNs&#xff09;的一个基础组件&#xff0c;它被设计用来处理图形数据的问题。在图形数据中&#xff0c;数据点&#xff08;节点&#xff09;之间的关系&#xff08;边…

openGauss学习笔记-123 openGauss 数据库管理-设置账本数据库-账本数据库概述

文章目录 openGauss学习笔记-123 openGauss 数据库管理-设置账本数据库-账本数据库概述123.1 背景信息123.2 操作步骤 openGauss学习笔记-123 openGauss 数据库管理-设置账本数据库-账本数据库概述 123.1 背景信息 账本数据库融合了区块链思想&#xff0c;将用户操作记录至两…

服务号转订阅号如何操作

服务号和订阅号有什么区别&#xff1f;服务号转为订阅号有哪些作用&#xff1f;一、文章推送的篇数不同服务号在文章的推送篇数上是有所限制的&#xff08;每月推4次&#xff09;订阅号则每天可推送一篇文章。二、定义不同服务号主要是为关注用户提供服务使用的&#xff1b;订阅…

【仿真动画】ABB IRB 8700 机器人搬运(ruckig在线轨迹生成)动画欣赏

场景 动画 一、IRB 8700简介 二、动画脚本重点分析 2.1 sim.moveToPose 通过在两个 poses 之间执行插值&#xff0c;使用 Ruckig 在线轨迹生成器生成对象运动数据。该函数可以通过处理 4 个运动变量&#xff08;x、y、z 和两个姿势之间的角度&#xff09;或单个运动变量&#…

服务器数据恢复—VMware虚拟化下误操作导致服务器崩溃的数据恢复案例

服务器故障&分析&#xff1a; VMware虚拟化&#xff0c;vmfs文件系统&#xff0c;共3块磁盘。工作人员误操作将VMware虚拟化重装系统&#xff0c;服务器崩溃。 正常情况下&#xff0c;重装系统会导致文件系统元文件被覆盖。要恢复数据须找到重装系统前的文件系统残留信息并…

操作系统(二 )| 进程控制 进程状态 进程描述 进程控制 进程同步互斥

文章目录 1 进程和程序区别2 进程状态2.1 进程的5种基本状态2.2 进程状态之间转换2.3 七状态模型 3 进程描述3.1 进程控制块 PCB3.2 进程块组织方式 4 进程控制5 进程同步 互斥5.1 区分进程互斥和同步5.2 核心方案5.3 其他方案方案1 设置锁变量方案2 严格轮转法方案3 Peterson解…

003.文件描述符、重定向

1、文件描述符 文件描述符是与输入和输出流相关联的整数。最广为人知的文件描述符是stdin、stdout和stderr。我们可以将某个文件描述符的内容重定向到另一个文件描述符中。 在编写脚本的时候会频繁用到标准输入&#xff08;stdin&#xff09;、标准输出&#xff08;stdout&am…

图像分类:弥合像素和理解之间的差距

一、介绍 在人工智能的广阔领域中&#xff0c;图像分类作为一种关键应用脱颖而出&#xff0c;它无缝地融合了计算机视觉和机器学习的复杂性。图像分类的核心是训练机器对数字图像中的对象或场景进行识别和分类。这项技术有着广泛的应用&#xff0c;从自动驾驶汽车和医疗诊断到社…

Spring-Spring之AOP底层源码解析(下)

ProxyFactory选择cglib或jdk动态代理原理 ProxyFactory在生成代理对象之前需要决定到底是使用JDK动态代理还是CGLIB技术&#xff1a; // config就是ProxyFactory对象// optimize为true,或proxyTargetClass为true,或用户没有给ProxyFactory对象添加interface if (config.isOpt…

CNVD-2021-09650:锐捷NBR路由器(guestIsUp.php)RCE漏洞复现 [附POC]

文章目录 锐捷NBR路由器guestIsUp.php远程命令执行漏洞(CNVD-2021-09650)复现 [附POC]0x01 前言0x02 漏洞描述0x03 影响版本0x04 漏洞环境0x05 漏洞复现1.访问漏洞环境2.构造POC3.复现 锐捷NBR路由器guestIsUp.php远程命令执行漏洞(CNVD-2021-09650)复现 [附POC] 0x01 前言 免…

解决 requests 库上传大文件速度慢的问题:从问题原因到解决方案

提要&#xff1a;本文将 深入探讨 requests 库上传大文件速度慢的问题&#xff0c;并提出相应的解决方案。 通过本文&#xff0c;您可以了解到 requests 库上传大文件的原理&#xff0c;了解问题的原因并找到解决方案。 最后&#xff0c;我们将 探讨如何优化上传大文件的处理速…

每日一题 2656. K 个元素的最大和(简单)

感觉每日一题除了困难之外很久没有做到有营养的题了 class Solution:def maximizeSum(self, nums: List[int], k: int) -> int:return (2 * max(nums) k - 1) * k // 2

二叉树(进阶)

文章目录 1.内容安排说明2. 二叉搜索树2.1二叉搜索树的概念2.2二叉搜索树的实现2.3二叉树的性能&#xff1a; 搜索二叉树的应用k 模型kv模型 1.内容安排说明 二叉树在前面c数据结构阶段&#xff1b;已经讲过了&#xff1b;本节取名二叉树进阶的原因是&#xff1a; 1.map和set特…

阿里云99元ECS云服务器老用户也能买,续费同价!

阿里云近日宣布了2023年的服务器优惠活动&#xff0c;令用户们振奋不已。最引人瞩目的消息是&#xff0c;阿里云放开了老用户的购买资格&#xff0c;99元服务器也可以供老用户购买&#xff0c;并且享受续费的99元优惠。此外&#xff0c;阿里云还推出了ECS经济型e实例&#xff0…

单片机实验(一)

前言 实验一&#xff1a;用单片机控制多只数码管(屏)分别左、右滚动显示自己完整的学号&#xff1b; 实验二&#xff1a;用单片机控制LED1616点阵交替正序、逆序显示自己的中文姓名。 参考链接&#xff1a; LED数码管的静态显示与动态显示&#xff08;KeilProteus&#xff0…

城市智慧排水监测系统,实时守护城市水脉

城市智慧排水监测系统&#xff0c;通过新一代信息技术与排水技术的完美融合&#xff0c;让数据价值得以充分发掘&#xff0c;实现智慧排水监测系统的控制智能化、数据资源化、管理精确化、决策智慧化。它如同城市的守护者&#xff0c;时刻关注着城市排水系统的运行状态&#xf…

算法-二分查找-简单-搜索插入位置

记录一下算法题的学习3 给定一个排序数组和一个目标值&#xff0c;在数组中找到目标值&#xff0c;并返回其索引。如果目标值不存在于数组中&#xff0c;返回它将会被按顺序插入的位置。 示例 1: 输入: nums [1,3,5,6], target 5 输出: 2示例 2: 输入: nums [1,3,5,6], …

Windows server 2012 R2系统服务器远程桌面服务激活服务器RD授权分享

Windows server 2012 R2系统服务器远程桌面服务激活服务器RD授权 二、激活服务器&#xff0c;获取许可证服务器ID和许可证密钥包ID三、激活终端服务器四、配置远程桌面会话主机授权服务器 上期我分享了Windows server 2012 R2系统服务器远程桌面服务的安装教程&#xff0c;若是…

基于模拟退火算法的TSP问题建模求解(Python)

基于模拟退火算法的TSP问题建模求解&#xff08;Python&#xff09; 一、模拟退火算法&#xff08;Simulated Annealing Algorithm&#xff0c;SAA&#xff09;工程背景模拟退火算法用于优化问题求解原理 二、旅行商问题&#xff08;Travelling salesman problem&#xff0c;TS…