算法训练第五十七天|647. 回文子串、516.最长回文子序列

647. 回文子串:

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

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

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

具有不同开始位置或结束位置的子串,即使是由相同的字符组成,也会被视作不同的子串。

示例 :

输入:s = "abc"
输出:3
解释:三个回文子串: "a", "b", "c"

解答:

class Solution {public int countSubstrings(String s) {char[] chars = s.toCharArray();int len = chars.length;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]) { //情况三result++;dp[i][j] = true;}}}}return result;}
}

算法总结:

本题求回文子串的数量,所以我们dp的设定可以设计为i,j中间是否是回文串,当chars[i] == chars[j]成立时,我们存在1.i=j,只有一个字符,例如:“a”,2.|i-j|=1,两个字符"aa",前两种都是成立的,我们需要主要考虑第三种情况:相差不止是1,例如:“abcba”,则我们需要根据他的子串的情况判断,则dp[i + 1][j - 1]需要为true。

516.最长回文子序列:

题目链接
给你一个字符串 s ,找出其中最长的回文子序列,并返回该序列的长度。

子序列定义为:不改变剩余字符顺序的情况下,删除某些字符或者不删除任何字符形成的一个序列。

示例 :

输入:s = "bbbab"
输出:4
解释:一个可能的最长回文子序列为 "bbbb"

解答:

class Solution {public int longestPalindromeSubseq(String s) {int len = s.length();int[][] dp = new int[len + 1][len + 1];for (int i = len - 1; i >= 0; i--) {dp[i][i] = 1;for (int j = i + 1; j < len; j++) {if (s.charAt(i) == s.charAt(j)) {dp[i][j] = dp[i + 1][j - 1] + 2;} else {dp[i][j] = Math.max(dp[i + 1][j], Math.max(dp[i][j], dp[i][j - 1]));}}}return dp[0][len - 1];}
}

算法总结:

本题求的最长回文子序列的长度,所以我们在dp的推导公式上和上一题又有所不同,当两个字符相同的时候dp[i][j] = dp[i + 1][j - 1] + 2;即扩大长度+2,当两者不同的时候,我们取前一个子串更大的一个

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

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

相关文章

【docker】如何编写dockerfile文件,构建docker镜像

如何编写dockerfile文件&#xff0c;构建docker镜像 一、docker 镜像与 dockerfile1.1 什么是Docker镜像1.2 Docker 镜像的结构 二、dockerfile 中常用的构建指令三、dockerfile 内容示例四、构建 docker 镜像 一、docker 镜像与 dockerfile 1.1 什么是Docker镜像 Docker镜像…

虾皮跨境电商物流:为卖家提供高效灵活的物流解决方案

虾皮&#xff08;Shopee&#xff09;作为一家知名的跨境电商平台&#xff0c;其物流服务是其成功的关键因素之一。虾皮跨境电商物流服务为卖家提供了一站式的物流解决方案&#xff0c;从订单处理到最终交付&#xff0c;为卖家提供高效、灵活、成本效益高的物流服务&#xff0c;…

【教学类-43-13】 20240103 (4宫格数独:错误版:768套) 不重复的基础模板数量:768套

作品展示&#xff1a;——4宫格 768套不重复模板&#xff08;64页*12套题&#xff09; 有错误&#xff0c;实际数量小于768套 背景需求&#xff1a; 测试4宫格数独基础模板有几种。 写个程序&#xff0c;验算是不是真的是乘阶法的288种。 代码展示&#xff1a; 768套4宫格题…

Python for与while循环的介绍和对应练习题的巩固

for循环 重复执行同一段代码就是循环 循环列表 for val in list_name: list_num [1,2,3,4,5,6,7,8,9] for i in list_num:print(i)代码执行顺序 从上往下依次执行 遍历 通过某种顺序把某种集合所有元素都访问一遍 list_food{"火锅","烧烤","张…

流媒体学习之路(WebRTC)——GCC分析(4)

流媒体学习之路(WebRTC)——GCC分析&#xff08;4&#xff09; —— 我正在的github给大家开发一个用于做实验的项目 —— github.com/qw225967/Bifrost目标&#xff1a;可以让大家熟悉各类Qos能力、带宽估计能力&#xff0c;提供每个环节关键参数调节接口并实现一个json全配置…

服务器硬件及RAID磁盘阵列详解

文章目录 一、服务器硬件服务器常见故障 二、RAID磁盘阵列详解1、RAID磁盘阵列概述2、RAID 0(条带化存储)3、RAID 1&#xff08;镜像存储&#xff09;4、RAID 55、RAID 66、RAID 10&#xff08;先做镜像&#xff0c;再做条带&#xff09;7、RAID 01&#xff08;先做条带&#x…

通配符证书免费获取

通配符证书是一种特殊的SSL/TLS证书&#xff0c;设计用于保护一个主域名及其无限数量的一级子域名。这种类型的数字证书通过使用一个星号&#xff08;*&#xff09;作为通配符来实现对多个子域的安全加密&#xff0c;使得所有与指定格式匹配的子域名都能在同一个证书下得到安全…

使用sensors获取LinuxCPU温度

标题使用sensors获取LinuxCPU温度 假设您的 sensors 命令输出类似于以下内容&#xff1a; Copy Codecoretemp-isa-0000 Adapter: ISA adapter Package id 0: 50.0C (high 80.0C, crit 90.0C) Core 0: 45.0C (high 80.0C, crit 90.0C) Core 1: 48.0C (h…

编程语言未来的发展方向

编程语言的未来&#xff1f; 编程语言发展到现在&#xff0c;已经是比较完善并且好用&#xff0c;但这仅仅是对于专业人士来说的。对于普通人来说还是遥不可及。未来编程语言会朝着更加简洁&#xff0c;更加易读的方向去发展&#xff0c;函数式编程和响应式编程会普及。编程语…

机器学习中的监督学习基本算法-逻辑回归简单介绍

逻辑回归 逻辑回归&#xff08;Logistic Regression&#xff09;是一种用于解决二分类问题的统计学习方法&#xff0c;尽管名字中带有"回归"一词&#xff0c;但实际上它是一种分类算法。逻辑回归的主要目标是通过学习从输入特征到一个离散的输出&#xff08;通常是0…

为什么要对服务器进行维护

我们在日常使用服务器的过程中&#xff0c;经常会遇到死机&#xff0c;卡顿等等&#xff0c;那么该怎么做才能避免出现类似情况。 为了确保服务器的正常运行和企业的顺利运营&#xff0c;定期进行服务器维护是必要的。服务器日常维护可以提高性能、保障安全、保持稳定性、延长…

Java基础03-方法与数组

方法 方法的定义 在Java中&#xff0c;方法是一组执行特定任务的代码块。方法定义由以下几个部分组成&#xff1a; 修饰符 返回类型 方法名(参数列表) {// 方法体 }修饰符&#xff1a;指定方法的访问权限&#xff08;public、private等&#xff09;。返回类型&#xff1a;指…

mybatisPlus beforeGetBoundSql和setProperties使用场景介绍及代码示例

beforeGetBoundSql 和 setProperties 都是 InnerInterceptor 接口中定义的默认方法&#xff0c;可以用于自定义拦截器实现。 beforeGetBoundSql 方法会在 MyBatis 获取 BoundSql 对象之前被调用&#xff0c;可以通过该方法来修改或扩展 SQL 语句&#xff0c;例如添加或删除条件…

利用Spring Cloud和Java系统设置优化工程项目管理系统源码的二次开发体验

工程项目管理涉及众多环节和角色&#xff0c;如何实现高效协同和信息共享是关键。本文将介绍一个采用先进技术框架的Java版工程项目管理系统&#xff0c;该系统支持前后端分离&#xff0c;功能全面&#xff0c;可满足不同角色的需求。从项目进度图表到施工地图&#xff0c;再到…

不忘初心,聚焦安全 —— 一名码龄15年的老程序员2023总结

2023总结 1. 整体回顾2. 亮点工作3. 未来展望 1. 整体回顾 作为一名码龄超15年的老程序员&#xff0c;虽然2008年就注册了CSDN博客&#xff0c;但是从2020年疫情以来才开始偶尔写写博客&#xff0c;前面两年虽然写了不少&#xff0c;但基本属于自娱自乐&#xff0c;粉丝量和阅…

匿名函数自调用的不同写法

匿名函数自调用&#xff0c;即函数只执行一次 匿名函数自调用一般写法为: (function(){ //具体内容 }() 其他写法如下&#xff1a; !function(){}() function(){}() ~function(){}() 初次外&#xff0c;前面还可以是&#xff1a;&#xff0c;-&#xff0c;*&#xff0c;/

RxJS之fromEvent学习

有情提示&#xff1a; 阅读此博客前&#xff0c;可先阅读博客https://blog.csdn.net/qq_44327851/article/details/135251408对RxJS进行简单的了解。 概念&#xff1a; fromEvent 是 RxJS 中的一个操作符&#xff0c;用于将事件转换为可观察的对象。它的作用是创建一个可观察对…

熔断、隔离、重试、降级、超时、限流,高可用架构流量治理核心策略全掌握

可用性的定义 在探讨高可用架构之前&#xff0c;让我们以 O2 系统为例&#xff0c;解释一下何谓可用性。O2 是腾讯内部的一个广告投放系统&#xff0c;专注于提升投放效率、分析广告效果&#xff0c;拥有自动化广告投放、AIGC 自动化素材生产等多种功能。 其整体架构概览如下&…

Java最新技术介绍和分析 (202305)

说明&#xff1a;本文完成了2023年5月份&#xff0c;当时最新的LTS版本是Java17&#xff0c;本文在撰写时参考了美团技术团队和阿里JDK团队相关的文章&#xff0c;以及本文也引了用文章中的图片。在此表示感谢&#xff01; Java版本火车 相信老牌的Java开发者和爱好者把Java的…