代码随想录训练营第五十七天
创始人
2024-05-10 04:08:26
0次

1.回文子串 题647

①dp数组含义

判断回文子串可以用头元素和尾元素是否相等的方式,设dp[i] [j]为[i,j]子串是否为回文子串,是则为true,否为false。

②递推公式

若 s[i] == s[j] ,分三种情况:i == j,即只有一个元素,那么只有一个回文子串,结果为true;

​ j - i =1,比如aa,那么也是回文子串,结果为true;

​ j - i >=1, 就得看dp[i+1] [j-1]的结果,结果与dp[i+1] [j-1]相同。

在这里插入图片描述

③初始化

全部默认为false。

④遍历顺序

看递推方向,从下往上,从左到右。

在这里插入图片描述

class Solution {
public:int countSubstrings(string s) {vector> dp(s.size(), vector(s.size(), false));int result = 0;for (int i = s.size() - 1; i >= 0; i--) {  // 注意遍历顺序for (int j = i; j < s.size(); j++) {      //j必须大于等于iif (s[i] == s[j]) {if (j - i <= 1) { // 情况一 和 情况二result++;dp[i][j] = true;} else if (dp[i + 1][j - 1]) { // 情况三result++;dp[i][j] = true;}}}}return result;}
};

2.最长回文子序列 题516

首先是子序列,然后才是回文,而子序列不一定是连续的。

①dp数组含义

跟回文子串差不多。[i] , j]的范围的回文子序列的长度。

②递推公式。

分两种情况,若s[i] == s[j],那么dp[i] [j] = dp[i+1] [j-1] + 2

​ 若s[i] != s[j], 那么也有两种情况,由于回文子序列可以不连续,只取s[i] 或者 s[j] 也有可能构成回文子序列。故只取s[i] 为 dp[i] [j-1],只取s[j] 为dp[i+1] [j],取这两种情况的最大值。

在这里插入图片描述

③初始化

根据递推公式,i不断+1,j不断-1,不断向中间靠拢,直到i = j,而这里就是需要初始化的地方,i = j为一个元素,一个元素也为回文子序列,所以赋值1。

④遍历顺序

在这里插入图片描述

class Solution {
public:int longestPalindromeSubseq(string s) {vector> dp(s.size(), vector(s.size(), 0));for (int i = 0; i < s.size(); i++) dp[i][i] = 1;for (int i = s.size() - 1; i >= 0; i--) {for (int j = i + 1; j < s.size(); j++) {if (s[i] == s[j]) {dp[i][j] = dp[i + 1][j - 1] + 2;} else {dp[i][j] = max(dp[i + 1][j], dp[i][j - 1]);}}}return dp[0][s.size() - 1];}
};

相关内容

热门资讯

前端-session、jwt 目录:   (1)session (2&#x...
linux入门---制作进度条 了解缓冲区 我们首先来看看下面的操作: 我们首先创建了一个文件并在这个文件里面添加了...
关于测试,我发现了哪些新大陆 关于测试 平常也只是听说过一些关于测试的术语,但并没有使用过测试工具。偶然看到编程老师...
前缀和与对数器与二分法 1. 前缀和 假设有一个数组,我们想大量频繁的去访问L到R这个区间的和,...
nodejs:本地安装nvm实... 一、背景-使用不同版本node的原因 vue3+ts、nuxt3版本,node...
JAVA集合知识整理 Java集合知识整理 HashMap相关 HashMap的底层数据结构:jdk1.8之...
无刷直流电机介绍及单片机控制实... 无刷直流电机介绍及单片机控制实例前言基本概念优势与劣势使用寿命基本结构使用单片机控制实例电子调速器&...
fwdiary(2) dp2 1.传纸条  AcWing 275. 传纸条 - AcWing 走两条路,走一条最大的...
常用的DOS命令 常用的DOS命令 DOS(Disk Operating System,磁...
<C++> 类和对象(下) 1.const成员函数将const修饰的“成员函数”称之为const成员函数,cons...