动态规划-回文串问题——647.回文子串

1.题目解析

题目解析:647.回文子串——力扣

测试用例

2.算法原理  

1.状态表示

本题需要判断一段字符串是否为回文子串,因此最简单的方法就是保存起开始位置与结束位置,那么就需要一个二维的dp表来保存一段字符串是否为回文子串,dp表的数据类型为bool类型

dp[i][j]:以第i个位置开始,第j个位置结束的字符串是否为回文子串,是则为true,反之为false

2.状态转移方程

由于回文子串需要中心对称,因此判断完两端则需要向中间判断,也就是dp[i][j] = dp[i+1][j-1],但是注意单个字符串与两个相同字符串的情况,这两种情况一定为回文子串,所以在判断前想确定此时的i+1<j是否成立,即一定保证要长度大于3,小于3就一定为true

状态转移方程为:if(s[i]==s[j])  dp[i][j] = i+1 < j ? dp[i+1][j-1] : true;

3.初始化

一开始就确定了单个字符与两个连续字符的情况,所以不用初始化

4.填表顺序

因为用到了i+1与j-1位置,根据状态表示的图示可以知道需要从下向上填表也就是i从后向前,j一定大于i小于n

5.返回值

返回dp表中true的个数

3.实战代码

代码解析 

class Solution {
public:
    int countSubstrings(string s) 
    {
        int n = s.size();
        int sum = 0;
        vector<vector<bool>> dp(n,vector<bool>(n));

        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])
                {
                    sum++;
                }
            }
        }    
        return sum;
    }
};

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

AI绘画王者归来!SD恐怖如斯!Facebook最强人体分割大师Sapiens 吊打SAM2,亦可Pose,Depth,Normal,ComfyUI

在AI绘画领域&#xff0c;SD恐怖如斯和Facebook的Sapiens模型一直是业界关注的焦点。而最近&#xff0c;Sapiens模型凭借其强大的人体分割能力&#xff0c;再次成为AI绘画领域的佼佼者。 SD恐怖如斯和Sapiens模型的优势 SD恐怖如斯是一款基于深度学习的AI绘画模型&#xff0c;…

Redis-06 Redis复制

主&#xff1a; 192.168.248.132 6379 从1&#xff1a; 192.168.248.140 6380 从2&#xff1a; 192.168.248.139 6381 1.三大命令 拷贝一个新的redis.conf&#xff08;出厂默认&#xff0c;没修改的&#xff09;的文件 2.配置详情 2.1 改为yes 2.2 87行注释掉 2.3 改为no …

什么是成品系统源码,哪里有成品源码,成品源码二次开发需要多久?

成品系统源码指的是已经开发完成、可以立即部署或根据需求进行二次开发的软件系统源代码。这些源码通常包括但医疗信息化软件&#xff08;如HIS、LIS、PACS等&#xff09;、智慧工地源码、家政预约上门系统、实验室管理系统、定位系统源码以及生产管理系统等。 1、医疗信息化软…

[OceanBase-不止于记录]:揭秘双引擎战略,共探AI时代数据架构未来

前言 又到了一年一度大家最爱的探会文章&#xff0c;非常荣幸收到OceanBase官方的邀请参加2024 OceanBase 年度发布会&#xff0c;作为一个经常参加线下探会的博主&#xff0c;每一次体验都有所不同&#xff0c;每一次新技术的突破都让人感到无比兴奋。同时&#xff0c;作为数…

ELK之路第三步——日志收集筛选logstash和filebeat

logstash和filebeat&#xff08;偷懒版&#xff09; 前言logstash1.下载2.修改配置文件3.测试启动4.文件启动 filebeat1.下载2.配置3.启动 前言 上一篇&#xff0c;我们说到了可视化界面Kibana的安装&#xff0c;这一篇&#xff0c;会简单介绍logstash和filebeat的安装和配置。…

终于完工! ffmpeg 视频滤镜:添加文本-drawtext

滤镜描述 drawtext 官网链接 》 FFmpeg Filters Documentation 这个滤镜可以给视频添加上文本&#xff0c;可以给文本加边框、颜色、阴影。注意不是字幕功能&#xff0c;因为这个滤镜不能精准的控制开始和结束的时间。 滤镜使用 参数 fontfile <string> …

【模型学习之路】手写+分析Transformer

手写分析transformer 目录 前言 positional encoding 注意力机制 多头注意力 高维度乘法 多头注意力机制 多头注意力层的实现 Encoder FeedForwardNet EncoderLayer Encoder Decoder DecoderLayer Decoder 组装Trasformer! 后话 测试一下 mask 前言 Attenti…

Z 检验和 T 检验之间的区别

目录 一、说明 二、什么是假设检验&#xff1f; 三、假设检验基础 3.1 假设检验的基本概念 3.2 、执行假设验证的步骤 3.3 临界值、P 值 3.4 方向假设 3.5 非方向假设检验s 四、什么是 Z 检验统计量&#xff1f; 五、Z 检验示例 5.1 单样本 Z 检验 5.2 双样本 Z 检…

动态规划 —— 路径问题-下降路径最小和

1. 下降路径最小和 题目链接&#xff1a; 931. 下降路径最小和 - 力扣&#xff08;LeetCode&#xff09;https://leetcode.cn/problems/minimum-falling-path-sum/description/ 2. 算法原理 状态表示&#xff1a;以莫一个位置位置为结尾 dp[i&#xff0c;j]表示&#xff1a;到…

大模型是怎么训练的 微调vsRAG

模型训练的关键 在理解提示工程、RAG和微调时&#xff0c;我们首先需明白大模型的训练依托于海量多样数据&#xff0c;使其具备跨领域的综合能力。以一个具体案例为例&#xff0c;当面对问题解答失败的情况时&#xff0c;需从三方面分析&#xff1a;一、提问者表述不清&#x…

SAP ABAP开发学习——第一代增强(包含增强演示)

​​​​​​SAP ABAP开发学习——第二代增强&#xff08;包含增强演示&#xff09;-CSDN博客 SAP ABAP开发学习——第三代增强&#xff08;BADI)-CSDN博客 概念 第一代增强(增强嵌入标准程序中) 第一代出口-User exit 以SD用户出口为例 SD及MM较多的程序都是基于源码控制来…

基础IO -- 标准错误输出stderr

目录 1&#xff09;为什么要有 fd 为 2 的 stderr 2&#xff09;使2和1重定向到一个文件中 这里我们谈一下以前只是了解过的stderr 通过两段代码&#xff0c;显然&#xff0c;我们可以知道两个FILE*都是指向显示器的 对于重定向&#xff0c;只有stdout才会将打印的数据重定向…

Cursor 写一个 Flutter Unsplash 壁纸工具 | 从零开始

Cursor 写一个 Flutter Unsplash 壁纸工具 | 从零开始 视频 https://space.bilibili.com/404904528/channel/collectiondetail?sid4106380 https://www.youtube.com/watch?v-ecvMPs5vN4&listPL274L1n86T835KIPMBSwWMy1At6XCJDVR 前言 原文 用Cursor和Flutter构建动态图…

十分钟Linux中的epoll机制

epoll机制 epoll是Linux内核提供的一种高效I/O事件通知机制&#xff0c;用于处理大量文件描述符的I/O操作。它适合高并发场景&#xff0c;如网络服务器、实时数据处理等&#xff0c;是select和poll的高效替代方案。 1. epoll的工作原理 epoll通过内核中的事件通知接口和文件…

【每日刷题】Day147

【每日刷题】Day147 &#x1f955;个人主页&#xff1a;开敲&#x1f349; &#x1f525;所属专栏&#xff1a;每日刷题&#x1f34d; &#x1f33c;文章目录&#x1f33c; 1. 神奇数_牛客笔试题_牛客网 2. DNA序列__牛客网 3. I-十字爆破_牛客小白月赛25 1. 神奇数_牛客笔…

干部出国境管理系统:规范管理,确保安全

在全球化的时代背景下&#xff0c;干部因工作需要或个人原因出国境的情况日益增多。为了加强对干部出国境的管理&#xff0c;确保干部出国境活动规范、有序、安全&#xff0c;干部出国境管理系统应运而生。 一、干部出国境管理系统的重要性 规范管理流程 干部出国境管理系统…

基于Qt的多线程并行和循序运行实验Demo

致谢&#xff08;Acknowledgement&#xff09;&#xff1a; 感谢Youtube博主Qt With Ketan与KDAB精心录制的Qt多线程处理应用教程&#xff0c;感谢Bilibili博主爱编程的大丙对Qt多线程与线程池内容深入浅出的讲解。 一、计算机线程相关概念 线程概念[1]&#xff1a; 在计算机科…

PyCharm专业版设置远程开发环境

以下是在PyCharm中设置远程开发环境的详细步骤&#xff1a; 没有专业版的在并夕夕上买 准备工作 确保本地已安装PyCharm专业版&#xff0c;因为社区版通常不支持远程开发功能。在远程服务器上安装好所需的Python版本以及相关的开发包和库&#xff0c;并且服务器需要开启SSH服务…

MySQL基础概念——针对实习面试

目录 MySQL基础什么是关系型数据库&#xff1f;什么是SQL&#xff1f;什么是ACID属性&#xff1f;什么是MySQL&#xff1f;MySQL为什么流行&#xff08;它的优点&#xff09;&#xff1f; 30秒读全文 MySQL基础 什么是关系型数据库&#xff1f; 关系型数据库&#xff08;Relat…

深入布局- grid布局

属性使用案例&#xff1a; 一、display 通过给元素设置&#xff1a;display:grid | inline-grid&#xff0c;可以让一个元素变成网格布局元素, display: grid&#xff1a;表示把元素定义为块级网格元素&#xff0c;单独占一行;&#xff08;如下图:&#xff09; display: inlin…