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

代码随想录Day46|647. 回文子串、516.最长回文子序列

目录

    • 647. 回文子串
      • 解题思路
        • 解法1
        • 解法2
    • 516.最长回文子序列
      • 解题思路
        • 解法
    • 今日总结

647. 回文子串

题目链接:Leetcode
文章讲解:代码随想录
视频讲解:bilibili

解题思路

  本题体现了dp选取的原则,这道题需要判断字符串回文,对应的是一段区间,因此需要两个下标,使用的是二维dp数组,而dp[i][j]的判断需要使用到其内部串dp[i+1][j-1],因此遍历顺序需要从下往上,从左到右,初始化则是全部为false,一环扣一环。

解法1
class Solution {
public:int countSubstrings(string s) {int n = s.size();int result = 0;vector<vector<bool>> dp(n, vector<bool>(n, false));for(int i=n-1; i>=0; i--){for(int j=i; j<n; j++){if(s[i]==s[j] && (j-i<=1 || dp[i+1][j-1])){dp[i][j] = true;result++;}}}return result;}
};
  • 时间复杂度:O(n2)O(n^2)O(n2)
  • 空间复杂度:O(n2)O(n^2)O(n2)
解法2

  也可以使用双指针进行处理,分为中心元素个数为1以及中心元素个数为2。

class Solution {
public:int countSubstrings(string s) {int n = s.size();int result = 0;for(int i=0; i<n; i++){result += extends(s, i, i, n);result += extends(s, i, i+1, n);}return result;}int extends(const string&s, int i, int j, int n){int res = 0;while(i>=0 && j<n && s[i]==s[j]){i--;j++;res++;}return res;}
};
  • 时间复杂度:O(n2)O(n^2)O(n2)
  • 空间复杂度:O(1)O(1)O(1)

516.最长回文子序列

题目链接:Leetcode
文章讲解:代码随想录
视频讲解:bilibili

解题思路

  和上一题很类似,可以删除元素,限制变少了。这里对于下标元素相同的情况,一种是同一个元素,赋值为1,另一种则是将其在上一个回文串的基础上加2。下标对应元素不相同时,说明新增的一个元素不满足,将其退回减少一个元素的情况,一个是下区间加1,另一个是上区间减1,取两者之间的较大值。

解法
class Solution {
public:int longestPalindromeSubseq(string s) {int n = s.size();vector<vector<int>> dp(n, vector<int>(n, 0));for(int i=n-1; i>=0; i--){for(int j=i; j<n; j++){if(s[i]==s[j]){if(i==j)    dp[i][j] = 1;elsedp[i][j] = dp[i+1][j-1] + 2;  } else {dp[i][j] = max(dp[i+1][j], dp[i][j-1]);}}}return dp[0][n-1];}
};
  • 时间复杂度:O(n2)O(n^2)O(n2)
  • 空间复杂度:O(n2)O(n^2)O(n2)

今日总结

  国庆在忙答辩,补卡中()

http://www.dtcms.com/a/466262.html

相关文章:

  • 钦州 网站建设全屋定制十大名牌口碑
  • 【MySQL】认识数据库以及MySQL安装
  • 网站建设网站软件有哪些内容金华网站建设seo
  • 做素描的网站鲜花网站建设文档
  • 从 PE 安装 Windows 系统全流程教程(适合U盘重装)
  • 自动下载ICLR论文
  • 导诊机器人如何提升三甲医院服务效能?
  • 北京网站模板下载品牌定位的三要素
  • 做游戏都需要什么网站微网站开发需要多少钱
  • 存储RAM/ROM硬件笔试真题解析
  • React.lazy 和 suspense 如何使用?
  • 深圳购物网站建设价格引流推广app
  • 【React】useMemo 和 useEffect 的用法
  • 网站建设微盘下载营销型网站建设范文
  • 3.1.4. Shell 函数的知识与实践
  • 双目测距-初识
  • C++开发基础之日期处理的全面指南:从C库到Chrono
  • 北京网站维护公司直通车优化推广
  • 大厂MongoDB开发运维规范
  • 公司网站可以自己做吗wex5可以做网站吗
  • 在浏览器上播放摄像头rtsp视频流的实现方案
  • LeetCode算法日记 - Day 67: 不同路径、最长递增子序列
  • 2024ICPC区域赛香港站
  • 公司网站备案怎么做运营管理培训
  • 基于STM32的智能衣柜系统/智能衣帽间/wifi衣柜/wifi衣帽间/智能家居系统
  • access 网站后台seo引擎
  • 打字训练文章大全:哪吒打字1000篇打字文章素材
  • 使用 minimind
  • MinerU与Docling:智能文档处理框架对比
  • GAN(Generative Adversarial Nets)生成对抗网络论文笔记