代码随想录算法训练营day60

devtools/2024/10/18 12:27:58/

647. 回文子串

五部曲:

dp数组下标及含义:

  • dp[i][j]:表示区间范围[i,j] 的子串是否是回文子串,如果是dp[i][j]为true,否则为false。

dp数组初始化:

  • dp[i][j]初始化为false。

递推公式:
s[i]=s[j]

  • 情况一:下标i 与 j相同,同一个字符例如a,当然是回文子串
  • 情况二:下标i 与 j相差为1,例如aa,也是回文子串
  • 情况三:下标:i 与 j相差大于1的时候,例如cabac,看区间 [i+1 , j-1]是不是回文

遍历方向: 从后到前,从右到左遍历

class Solution {
public:int countSubstrings(string s) {vector<vector<bool>> dp(s.size(), vector<bool>(s.size(), false));int result = 0;for(int i = s.size()-1;i>=0;i--){for(int j = i;j<s.size();j++){if(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;}
};

516.最长回文子序列

回文子串是要连续的,回文子序列可不是连续的!
五部曲:

dp数组下标及含义:

  • dp[i][j]:字符串s在[i, j]范围内最长的回文子序列的长度为dp[i][j]。

dp数组初始化:

  • dp[i][j]初始化为0。
  • dp[i][i]初始化为1。

递推公式:

  • 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]);

**遍历方向:**从下到上遍历,从左向右遍历。

class Solution {
public:int longestPalindromeSubseq(string s) {vector<vector<int>> dp(s.size(), vector<int>(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];}
};

http://www.ppmy.cn/devtools/34448.html

相关文章

人工智能|推荐系统——工业界的推荐系统之交叉

Factorized Machine 线性模型预测是特征的加权和。(只有加,没有乘。) 二阶特征交叉 可以通过矩阵分解减少模型参数量 深度交叉网络(DCN) 之前提到过的召回、排序模型中的神经网络可以用任意网络结构;常见的交叉层

2024年开视频号小店需要什么条件?多少资金?一篇详解!

大家好&#xff0c;我是电商糖果 2024年只要你想创业做电商&#xff0c;或者想找副业项目&#xff0c;我想很多人都会给你推荐视频号小店。 为什么&#xff1f; 视频号小店是微信视频号推出的电商平台&#xff0c;因为它背后有着十几亿的真实用户&#xff0c;以及无法预估的…

【信息安全管理与评估】某年“信息安全管理与评估”第二阶段:Windows应急响应例题

文章目录 1、提交攻击者的IP地址&#xff1b;2、识别攻击者使用的操作系统&#xff1b;3、找出攻击者资产收集所使用的平台&#xff1b;4、提交攻击者目录扫描所使用的工具名称&#xff1b;5、提交攻击者首次攻击成功的时间&#xff0c;格式&#xff1a;DD /MM/YY:HH:MM:SS&…

qt5-入门-QTableWidget-嵌套的表格

参考&#xff1a; C GUI Programming with Qt 4, Second Edition 本地环境&#xff1a; win10专业版&#xff0c;64位&#xff0c;Qt5.12 所有代码已经跑通。 仅供个人记录、积累。 目录 基础版效果实现如何获取QTableWidget的默认行高&#xff1f;代码 无边框版效果实现 基…

【八股】测开

元素定位 Selenium的webdriver提供了八种基本的元素定位方法,前面六种是通过元素的属性来直接定位的,后面的xpath和css定位更加灵活,也比较常用,需要重点掌握其中一个。 1.通过id定位:find_element_by_id() 2.通过name定位:find_element_by_name() 3.通过class定位:fin…

LeetCode 第396场周赛个人题解

目录 100284. 有效单词 原题链接 思路分析 AC代码 100275. K 周期字符串需要的最少操作次数 原题链接 思路分析 AC代码 100283. 同位字符串连接的最小长度 原题链接 思路分析 AC代码 100288. 使数组中所有元素相等的最小开销 原题链接 思路分析 AC代码 100284. …

【JavaEE 初阶(二)】线程安全问题

❣博主主页: 33的博客❣ ▶️文章专栏分类:JavaEE◀️ &#x1f69a;我的代码仓库: 33的代码仓库&#x1f69a; &#x1faf5;&#x1faf5;&#x1faf5;关注我带你了解更多线程知识 目录 1.前言2.synchronized2.1例子2.2synchronized修饰代码块2.3 synchronized修饰方法2.4sy…

2万字长文:海豚调度器(DolphinScheduler)面试题深入了解

目录 海豚调度器的主要功能和特点 海豚调度器与Oozie、Azkaban等调度器相比的优势