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

动态规划---回文子串

题目:

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

回文字符串 是正着读和倒过来读一样的字符串。

子字符串 是字符串中的由连续字符组成的一个序列。

思路:

1.确定dp数组及含义

dp[i][j]代表字符串区间[i,j](左闭右闭)的字符是不是回文子串(true,false)

2.确定递推公式

如果s[i]!=s[j],一定不是回文子串,dp[i][j]=false

如果s[i]=s[j],要分情况讨论:

(1)j-i=0,是回文子串,dp[i][j]=true

(2)j-i=1,是回文子串,dp[i][j]=true

(3)j-i>1,要确定区间[i+1,j-1]的字符串是不是回文子串,如果是,那么dp[i][j]=true

3.初始化dp数组

全部初始化为false

4.确定遍历顺序

根据递推公式,需要从下到上,从左到右遍历

代码:

    public int countSubstrings(String s) {
        int len=s.length();
        char[] chars=s.toCharArray();
        boolean[][] dp=new boolean[len][len];
        int result=0;
        for(int i=len-1;i>=0;i--){
            for(int j=i;j<len;j++){
                if(chars[i]==chars[j]){
                    if(j-i<=1){
                        result++;
                        dp[i][j]=true;
                    }
                    else if(dp[i+1][j-1]==true){
                        result++;
                        dp[i][j]=true;
                    }
                }
            }
        }
        return result;
    }


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

相关文章:

  • mysql 更改 字段长度
  • ExecStart=/usr/bin/mongod --config /etc/mongod.conf (code=exited, status=2)
  • 全球碳循环数据集(2000-2023)包括总初级生产力、生态系统净碳交换和生态系统呼吸变量
  • 面试题之---解释一下原型和原型链
  • JS之正则表达式
  • 树莓派安装FreeSWITCH
  • 55 mysql 的登录认证流程
  • 掌握MATLAB中的数据类型转换技巧
  • 21. 什么是MyBatis中的N+1问题?如何解决?
  • qt信号与槽(自定义)
  • 手势识别-Yolov5模型-自制数据集训练
  • Kafka是如何保证数据的安全性、可靠性和分区的
  • 共享股东分红模式小程序开发
  • [数据集][目标检测]葡萄成熟度检测数据集VOC+YOLO格式1123张3类别
  • C HTML格式解析与生成之gumbo
  • python怎么输入整数
  • 万能小程序运营管理系统 _requestPost 任意文件读取漏洞复现
  • DAY20240911 VUE:解锁前端路由的奥秘:如何在单页应用中避免404困境?
  • 流量牵引技术与传统防火墙的区别
  • 在网络环境中怎么保护个人信息安全?
  • 土壤墒情测定仪的工作原理
  • 汽车软件开发之敏捷开发
  • Spring 源码解读:手动实现Spring事件机制
  • JSON.parseArray 内存溢出
  • 【第十一章:Sentosa_DSML社区版-机器学习分类】
  • Oracle数据库高级技术探秘:分区表管理与代码实战