【动态规划】字串中回文的个数

news2025/8/16 15:21:18

一、题目描述

给你一个字符串 s ,请你统计并返回这个字符串中 回文子串 的数目。

注:

  1. 回文字符串 是正着读和倒过来读一样的字符串。
  2. 子字符串 是字符串中的由连续字符组成的一个序列。
  3. 具有不同开始位置或结束位置的子串,即使是由相同的字符组成,也会被视作不同的子串

示例:

在这里插入图片描述

二、思路

我们使用动态规划的方式解决这个问题,那么我们需要思考以下几个问题:

1. dp[][] 数组的含义?

dp[][] 数组表示 [i, j] 范围(j >= i)的字串是否是回文字串

2. 状态转移方程是什么?

dp[i][j] 是否是回文字串与两个状态有关,这两个状态分别是:

1) i , j 处的字符是否相等
2) 去掉头尾 i, j 字符的子字符串是否是回文

以 字符串 abcc 为例,请看图解:

在这里插入图片描述

根据这个我们就可以写出状态转移方程为:

dp[i][j] = (s.charAt(i) == s.charAt(j)) && dp[i+1][j-1]

3. 如何初始化 dp 数组?
dp 数组直接初始化全部为 false 即可

三、代码

class Solution {
    public int countSubstrings(String s) {
        boolean[][] dp = new boolean[s.length()][s.length()];
        int res = 0;
        for(int i=s.length()-1; i>=0; i--){
            for(int j=i; j<s.length(); j++){
                if(s.charAt(i) == s.charAt(j)){
                    if(j-i<=2 || dp[i+1][j-1]){
                        res++;
                        dp[i][j] = true;
                    }
                } else{
                    dp[i][j] = false;
                }
            }
        }
        return res;                                                                                                                                                                   
    }
}

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

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

相关文章

Matlab论文插图绘制模板—水平三维柱状图(渐变)

在之前的文章中&#xff0c;分享了Matlab水平三维柱状图的绘制模板。 高度赋色的水平三维柱状图&#xff1a; 这次再来分享一下渐变赋色的水平三维柱状图的绘制模板。 先来看一下成品效果&#xff1a; 特别提示&#xff1a;Matlab论文插图绘制模板系列&#xff0c;旨在降低大家…

CellMarker 2.0 | 鼠标点一点就完成单细胞分析的完美工具~

1写在前面 本期我们介绍一下CellMarker 2.0上更新的6个网页工具&#xff0c;主要是用于scRNA-seq数据的分析与可视化。&#x1f970; 网址如下&#xff1a;&#x1f447; &#x1f4cd;http://bio-bigdata.hrbmu.edu.cn/CellMarker/index.html 2Single cell web tools 概览 作者…

“幂等”不等于“分布式锁”,也不得不考虑返回值

. 概览 在分布式系统中&#xff0c;幂等是一个非常重要的概念&#xff0c;常常与“重试”一起出现。当调用一个远程服务发生超时&#xff0c;调用方并不知道请求是否执行成功&#xff0c;这就是典型的“第三态”问题。对于这个问题最常见的解决方案便是进行主动重试&#xff0…

20道前端高频面试题(附答案)

setTimeout 模拟 setInterval 描述&#xff1a;使用setTimeout模拟实现setInterval的功能。 实现&#xff1a; const mySetInterval(fn, time) {let timer null;const interval () > {timer setTimeout(() > {fn(); // time 时间之后会执行真正的函数fninterval()…

2022年NPDP新版教材知识集锦--【第三章节】(4)

【敏捷开发】 8.1敏捷开发模型的定义 门径和敏捷方法的特点&#xff1a;门径流程适用于开发硬件产品&#xff0c;而敏捷方法适用于开发软件产品。这两种方法是相对独立的。敏捷方法和门径流程不是互相取代的关系。相反敏捷方法是一种有效的微观规划工具或项目管理工具&#x…

如何使用远程控制软件并将用途最大化?4款国内外优质应用测评解析

说起远控软件&#xff0c;大家的第一印象是什么&#xff1f;是能实现电脑控制电脑、手机平板控制电脑、或手机电脑控制另外手机的操作需求&#xff0c;还是TeamViewer、ToDesk、向日葵、微软桌面这类的产品名称&#xff1f; 在三年疫情下&#xff0c;我们或多或少都经历了居家…

VMware安装Centos

此教程版本使用的是 VMware 16 、Centos 7 虚拟机安装 Centos安装 注: win10下vmware 15 可能会有蓝屏现象 排查:自行检查是否安装有 KB4601319 补丁,如果有请卸载,或者安装 vmware 16 官网下载地址 跳转 控制面板 — 程序与功能 — 查看已安装的更新 虚拟机安装 打开vmware…

【快速上手系列】使用阿里云发送测试短信超简单教程

【快速上手系列】使用阿里云发送测试短信超简单教程 步骤 一、阿里云配置 1、进入阿里云首页点击短信服务 2、短信服务界面 3、点击快速学习&#xff0c;然后绑定测试手机号&#xff0c;绑定好后点击调用API发送短信 4、左侧可以看到一些参数设置&#xff0c;右面是可以选择…

基于Ryu 防火墙的检测和解决异常入侵的流量

基于Ryu 防火墙的检测和解决异常入侵的流量基于Ryu 防火墙的检测和解决异常入侵的流量防火墙规则实验仿真环节&#xff1a;1.下载代码到本地2.安装相关依赖库3.设置openflow1.34.启动控制器异常检测&#xff1a;异常解决&#xff1a;规则合并&#xff1a;防火墙规则树&#xff…

(一)EasyExcel的使用(读取数据到实体类即绑定实体类)

最近遇到了一个excel简单的导入导出的需求&#xff0c;因此就对easyexcel第三方插件的使用做一点总结&#xff0c;大家可以看一看&#xff0c;可能会对你有点帮助。 目录 前言&#xff1a; 1、引入easyexcel相关依赖 2、创建对应excel的实体类 3、导入excel&#xff0c;并…

mac照片肖像美容ON1 Portrait AI 2023

人像照片怎么美容编辑呢&#xff1f;使用 ON1 Portrait AI 2023只需点击一下即可完美修饰。它使用机器学习来查找照片中的每一张脸&#xff0c;并自动使它们看起来很棒。它分析每张脸&#xff0c;并为皮肤、眼睛和嘴巴添加适量的修饰&#xff0c;立即为您提供专业的效果。 软件…

目标检测算法——工业缺陷数据集汇总1(附下载链接)

>>>深度学习Tricks&#xff0c;第一时间送达<<< &#x1f680;近期&#xff0c;小海带在空闲之余&#xff0c;收集整理了一批自动驾驶开源数据集供大家参考。 整理不易&#xff0c;小伙伴们记得一键三连喔&#xff01;&#xff01;&#xff01;&#x1f91e…

计算机毕业设计:基于html制作大学生网上报到系统响应式模板项目源码

&#x1f389;精彩专栏推荐 &#x1f4ad;文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业&#xff1a; 【&#x1f4da;毕设项目精品实战案例 (10…

UNet - 预测数据predict(多个图像的分割)

目录 1. 介绍 2. predict 预测分割图片 3. 结果展示 4. 完整代码 1. 介绍 之前已经将unet的网络模块、dataset数据加载和train训练数据已经解决了&#xff0c;这次要将unet网络去分割图像&#xff0c;下面是之前的链接 unet 网络&#xff1a;UNet - unet网络 dataset 数…

chineseocr测试具体部署步骤(不用web界面)

源项目地址&#xff1a; https://github.com/chineseocr/chineseocr 由于chineseocr需要在web上展示检测结果&#xff0c;还需要安装web相关内容&#xff0c;我的硬件是nvidia agx orin只需要在本地查看检测结果&#xff0c;做如下操作 找到源码项目中的test.ipynb,改写成test.…

天津教育杂志天津教育杂志社天津教育编辑部2022年第30期目录

卷首语 构建精准资助模式 保障经济困难学生安心求学 本刊编辑部; 1 本刊视线_关注 中学生行为习惯养成教育的策略——基于福州第十五中学学生行为习惯养成教育的实践 贺玉亮;林瑶; 4-6 本刊视线_特殊教育《天津教育》投稿&#xff1a;cn7kantougao163.com 面向听障…

最高薪15k!“转行软件测试后,我想要的生活,就应该是这样!”

​最近的低温天气 切切实实让汇智妹感受到了冬天 上下班路上骑个自行车都冻手手 &#xff08;成都的“湿冷魔法伤害”真不是吹的&#xff09; 好不容易等来了周末 只想待在家里哪儿都不去 裹着毛毯安逸地休息两天 周一再继续撸起袖子加油干 ​ ​“公司通知周末要加班”…

jenkins 中pipeline相关语法学习

jenkins基础 Jenkins介绍 持续集成&#xff0c;就是通常所说的CI&#xff08;Continues Integration&#xff09;&#xff0c;可以说是现代软件技术开发的基础。 持续集成是一种软件开发实践&#xff0c;即团队开发成员经常集成他们的工作&#xff0c;通常每个成员至少集成一…

Docker踩坑,又涨知识了

背景 新上线一个批处理功能&#xff0c;基于Docker发布的。上线之后出现一个问题&#xff0c;Docker批处理生成的文件目录&#xff0c;别的应用程序无法访问。 之前也在使用Docker&#xff0c;但并未涉及到文件共享的问题&#xff0c;还真没留意到。经过一系列排查&#xff0…

第二章 模型评估与选择(上)

2.1 经验误差与过拟合 通常我们把分类错误的样本数占样本总数的比例为”错误率”&#xff0c;精度1-错误率。模型的实际预测输出与样本的真实输出之间的差异称为“误差”&#xff0c;模型在训练集上的误差称为“训练误差”或“经验误差”,在新样本上的误差称为“泛化误差” 当…