代码随想录Day60 | 647. 回文子串 647. 回文子串

代码随想录Day60 | 647. 回文子串 647. 回文子串

  • 647.回文子串
  • 516.最长回文子序列

647.回文子串

文档讲解:代码随想录
视频讲解: 动态规划,字符串性质决定了DP数组的定义 | LeetCode:647.回文子串
状态

在这里插入图片描述

  1. dp数组
    dp[i][j] 表示字符串从i到j的子串是否是回文的
  2. 递推公式
    考虑s[i]和s[j]如果两个相等 且 j-i >1 那么还需要考虑 dp[i+1][j-1]
    如果i==j或者j-i == 1 那么可以说明dp[i][j] 是回文的
    如果s[i] != s[j] 那么说明dp[i][j]肯定不是回文的
  3. 初始化
    初始为false
  4. 遍历顺序
    对于i也就是行需要从下到上,对于j也就是列需要从左到右
  5. 打印dp
class Solution {
public:int countSubstrings(string s) {vector<vector<int>> dp(s.size()+1,vector<int>(s.size()+1,0));int res = 0;for(int i = s.size()-1;i>=0;i--){for(int j = i;j<s.size()+1;j++){if(s[i] == s[j]){if(j-i <= 1) {dp[i][j] = 1;res++;}//j-i > 1子串长度大于2else{dp[i][j] = dp[i+1][j-1];if(dp[i][j] == 1) res++;}}//s[i]!=s[j]else dp[i][j] = 0;}}return res;}
};

516.最长回文子序列

文档讲解:代码随想录
视频讲解: 动态规划再显神通,LeetCode:516.最长回文子序列
状态

子序列与子串,子串必须是连续的,子序列是可以通过删除字符串中的字符获得所以可以理解为不连续的

  1. dp数组
    dp[i][j]表示从i到j的子串中的最长回文子序列
  2. 递推公式
    如果s[i] == s[j] 那么dp[i][j] = dp[i+1][j-1]+2
    如果不相等 那么 dp[i][j] = max(dp[i+1][j],dp[i][j-1]),相当于就是只加入s[i]或者s[j]来判断是否存在更长的回文子序列
  3. 遍历顺序
    对于行 从下到上
    对于列 从左到右
  4. 初始化
    初始长度都为0
  5. 打印dp
class Solution {
public:int longestPalindromeSubseq(string s) {vector<vector<int>> dp(s.size()+1,vector<int>(s.size()+1,0));for(int i = s.size()-1;i>=0;i--){for(int j = i;j<s.size()+1;j++){if(s[i] == s[j]){if(j-i<=1) dp[i][j] = j-i+1;else{dp[i][j] = dp[i+1][j-1]+2;}}else{dp[i][j] = max(dp[i][j-1],dp[i+1][j]);}}}return dp[0][s.size()];}
};

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

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

相关文章

c++逻辑值bool使用介绍

在 C 中&#xff0c;bool 是一种基本数据类型&#xff0c;用于表示逻辑值&#xff0c;取值为 true 或 false。bool 类型通常用于条件判断和逻辑运算&#xff0c;是 C 中非常重要的数据类型之一。 以下是关于 bool 类型的详细介绍&#xff1a; 定义和赋值&#xff1a; bool i…

Vue v-for、v-if、v-show常见问题

vue使用v-for遍历对象时&#xff0c;是按照什么顺序遍历的&#xff1f;如何保证顺序&#xff1f; 会先判断对象是否存在iterator接口&#xff0c;如果有循环执行next()方法。 没有iterator的情况下&#xff0c;会调用Object.Keys()方法&#xff0c;在不同的浏览器中&#xff…

Ansible-Tower web界面管理安装

Ansible-Tower web界面管理安装 Ansible-Tower 介绍 Ansible-Tower&#xff08;之前叫做awx&#xff09;是将ansible的指令界面化&#xff0c;简明直观&#xff0c;简单易用。Ansibke-tower其实就是一个图形化的任务调度&#xff0c;复杂服务部署&#xff0c;IT自动化的一个管…

有哪些适合程序员做的副业?

如果你经常玩知乎、看公众号&#xff08;软件、工具、互联网这几类的&#xff09;你就会发现&#xff0c;好多资源连接都变成了夸克网盘、迅雷网盘的资源链接。 例如&#xff1a;天涯神贴&#xff0c;基本上全是夸克、UC、迅雷网盘的资源链接。 有资源的前提下&#xff0c;迅雷…

pytorch建模的三种方式

# 可以使用以下3种方式构建模型&#xff1a; # # 1&#xff0c;继承nn.Module基类构建自定义模型。 # # 2&#xff0c;使用nn.Sequential按层顺序构建模型。 # # 3&#xff0c;继承nn.Module基类构建模型并辅助应用模型容器进行封装(nn.Sequential,nn.ModuleList,nn.ModuleDict…

泛微e-office系统敏感信息泄露漏洞

声明 本文仅用于技术交流&#xff0c;请勿用于非法用途 由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失&#xff0c;均由使用者本人负责&#xff0c;文章作者不为此承担任何责任 1、系统简介 泛微e-office系统是标准、易用、快速部署上线的专业协同OA软…

jackson、gson、fastjson和json-lib四种主流json解析框架对比

一、四种框架的介绍和对比 在Java中&#xff0c;Jackson、Gson、Fastjson和json-lib都是流行的JSON解析框架&#xff0c;它们各自有一些特点和优势。下面是对它们进行简要介绍和对比&#xff1a; 1.1 介绍 1&#xff09; Jackson: Jackson是由FasterXML开发的一个高性能的J…

01VScode开发stm32环境搭建

title: VScode开发stm32环境搭建 tags: STM32vscode 1.准备工作 1.下载并安装VSCODE 在百度上搜索vscode记住一定要是官方的 不然你自己就是在给自己下毒2345全来了 打红圈一定要有不然就是在垃圾网站上下的 VSCode下载链接 选一个适合你的      安装正常流程走就行不再…

Kafka生产常见问题分析与总结

Kafka生产常见问题分析与总结 消息丢失 生产者 acks 0 不需要等待任何Broker确认收到消息的回复就可以继续发消息 性能最高&#xff0c;但是最容易丢消息&#xff0c;对于数据丢失不敏感的场景可以使用&#xff0c;如大数据统计报表 acks 1 只要等待Broker中的leader成功写…

入侵检测系统的设计与实现

入侵检测系统&#xff08;Intrusion Detection System&#xff0c;简称IDS&#xff09;是一种能够监视网络或计算机系统活动的安全工具&#xff0c;旨在识别并响应可能的恶意行为或安全事件。这些事件可能包括未经授权的访问、恶意软件、拒绝服务攻击等。入侵检测系统通过不同的…

高并发Server的基石:reactor反应堆模式

业务开发同学只关心业务处理流程。但是我们开发的程序都是运行服务端server上&#xff0c;服务端server接收到IO请求后&#xff0c;是如何处理请求并最终进入业务流程的呢&#xff1f;这里不得不提到reactor反应堆模型。nginx tomcat redis nodejs dubbo等软件的网络处理模型都…

JS进阶——一些常用的字符串方法

charAt(index): 返回在指定位置的字符。 const str "Hello"; console.log(str.charAt(1)); // 输出 "e" concat(string2, string3, ..., stringX): 连接两个或更多字符串&#xff0c;并返回新的字符串。 const str1 "Hello"; const str2 …

SwiftUI 支持拖放功能的集合视图(Grid)如何捕获手指按下并抬起这一操作

功能需求 假设我们开发了一款 SwiftUI 应用,其中用户可以通过拖放 Grid 中的 Cell 来完成一些操作。现在,我们希望用户在某个 Cell 被按下并随后抬起手指时得到通知,这能够实现吗? 如上图所示,我们准确地捕获到了手指在 Grid 的 Cell 上按下再抬起这一操作!那么它是如何…

R语言【BIEN】——BIEN_occurrence_species():从BIEN中提取指定物种的观察数据

Package BIEN version 1.2.6 Description BIEN_occurrence_species()从BIEN数据库下载特定物种的观察记录。 Usage BIEN_occurrence_species(species,cultivated FALSE,new.world NULL,all.taxonomy FALSE,native.status FALSE,natives.only TRUE,observation.type FAL…

Linux之ACL访问控制列表

一、ACL权限的介绍 1.1 什么是ACL 访问控制列表&#xff08;ACL&#xff09;是一种网络安全技术&#xff0c;它通过在网络设备&#xff08;如路由器、交换机和防火墙&#xff09;上定义一系列规则&#xff0c;对进出接口的数据包进行控制。这些规则可以包含“允许”&…

123 Linux C++ 系统编程2 Linux 上安装卸载程序三种方法,linux 下解压缩命令 tar介绍。kill命令,top命令,umask 命令

一 通过命令和网络直接安装 sudo apt-get update sudo apt-get update 的工作就是将自己本地 ubutun的软件列表和 aliyun 的软件列表对比&#xff0c;如不一样&#xff0c;则更新。 sudo apt-get install 软件名 真正的安装 那么这里就有一个问题了&#xff0c; 怎么从aliy…

【初始RabbitMQ】死信队列的实现

死信的概念 死信&#xff0c;顾名思义就是无法被消费的消息&#xff0c;字面意思可以这样理解&#xff0c;一般来说&#xff0c;producer 将消息投递到 broker 或者直接到 queue 里了&#xff0c;consumer 从 queue 取出消息 进行消费&#xff0c;但某些时候由于特定的原因导致…

认识HarmonyOS

1.认识HarmonyOS 1.1.HarmonyOS简介 在中美贸易战的刺激下&#xff0c;国产操作系统HarmonyOS&#xff08;鸿蒙操作系统&#xff09;开始进入到大众的视野。 鸿蒙寓意为“万物起源”&#xff0c;发展至今已经经过了好几个迭代版本。 1.1.1.早期鸿蒙雏形 LiteOS 2015 年 5 月 …

STM32F103x 的时钟源

AHB (Advanced High-performance Bus) 高速总线&#xff0c;用来接高速外设的。 APB (Advanced Peripheral Bus) 低速总线&#xff0c;用来接低速外设的&#xff0c;包含APB1 和 APB2。 APB1&#xff1a;上面连接的是低速外设&#xff0c;包括电源接口、备份接口、 CAN 、 US…

k8s中基于alpine的pod无法解析域名问题

现象 在pod内无法解析指定域名 # 执行ping bash-4.4# ping xx-xx-svc-0.xxx-fcp.svc.cluster.local ping: bad address xx-xx-svc-0.xxx-fcp.svc.cluster.local排查经过 # 执行nslookup bash-4.4# nslookup xx-xx-svc-0.xxx-fcp.svc.cluster.local Server: 172.43.0…