LeetCode 647回文子串 517最长回文子序列 | 代码随想录25期训练营day57

动态规划算法14

LeetCode 647 回文子串 2023.12.20

  • 题目链接
  • 代码随想录讲解[链接]
    在这里插入图片描述
int countSubstrings(string s) {//暴力搜索,前两层遍历确定子字符串的起始和末尾位置//第三层循环判断当前子字符串是否为回文串/*int result = 0;for (int i = 0; i < s.size(); i++){for(int j = i; j < s.size(); j++){//sym变量用于记录判断结果,当不是回文串时,sym值变int sym = 1;for (int k = i; k <= (j+i)/2; k++){if(s[k] != s[j-(k-i)]){sym = 0;break; }}if(sym == 1)result++;}}return result;*///动态规划//result存储s字符串中回文子串的个数int result = 0;//1确定二维dp数组,dp[i][j]表示s[i, j]子串是否为回文串vector<vector<bool>> dp(s.size(), vector<bool>(s.size(), false));//3初始化,根据递推公式含义,dp所有值默认值为false//2确定递推公式 4确定遍历顺序//dp[i][j]由dp[i+1][j-1]得出,那么二层循环先倒序后正序for (int i = s.size()-1; i >= 0; i--){for(int j = i; j < s.size(); j++){//递推公式:当s[i, j]子字符串首尾元素相同时//当j-i<=1时,那么说明只有一个元素或者三个元素中首尾元素相同//当j-i>1时,判断s[i+1, j-1]是否为回文串,如果是,那么s[i, j]也是回文串if(s[i] == s[j]){if(j-i <= 1){dp[i][j] = true;result++;}else{if(dp[i+1][j-1]){dp[i][j] = true;result++;}}}}}return result;
}

LeetCode 517 最长回文子序列 2023.12.20

  • 题目链接
  • 代码随想录讲解[链接]
    在这里插入图片描述
int longestPalindromeSubseq(string s) {//1确定dp数组,dp[i][j]表示s[i, j]区间内最长回文子序列的长度vector<vector<int>> dp(s.size(), vector<int>(s.size(), 0));//3初始化,根据递推公式含义,需要对i=j时dp[i][j]赋值长度为1for (int i = 0; i < s.size(); i++)dp[i][i] = 1;//2确定递推公式 4确定遍历顺序//dp[i][j]由dp[i+1][j-1]、dp[i+1][j]、dp[i][j-1]得出,那么二层循环先倒序后正序for (int i = s.size()-1; i >= 0; i--){for(int j = i + 1; j < s.size(); j++){//当s[i] == s[j]时,dp[i][j]=dp[i+1][j-1]+i,j两个字符长度if(s[i] == s[j])dp[i][j] = dp[i+1][j-1] + 2;//当s[i] == s[j]时,dp[i][j]=max(在dp[i+1][j-1]基础上加s[i]或s[j]的最长回文子序列长度)elsedp[i][j] = max(dp[i+1][j], dp[i][j-1]);}}//返回s[0,s.size()-1]的最长回文子序列长度return dp[0][s.size()-1];
}

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

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

相关文章

灰盒测试简要学习指南!

在本文中&#xff0c;我们将了解什么是灰盒测试、以及为什么要使用它&#xff0c;以及它的优缺点。 在软件测试中&#xff0c;灰盒测试是一种有用的技术&#xff0c;可以确保发布的软件是高性能的、安全的并满足预期用户的需求。这是一种从外部测试应用程序同时跟踪其内部操作…

2023 英特尔On技术创新大会直播 | 窥探未来科技的边界

2023 英特尔On技术创新大会直播 | 窥探未来科技的边界 写在最前面观后感其他有趣的专题课程 写在最前面 嘿&#xff0c;你是不是对科技和创新充满好奇&#xff1f;2023 英特尔 On 技术创新大会线上活动邀请你一起探索最前沿的科技世界&#xff01; 这不仅是一场普通的聚会&…

golang开发--beego入门

Beego 是一个基于 Go 语言的开源框架&#xff0c;用于构建 Web 应用程序和 API。它采用了一些常见的设计模式&#xff0c;以提高开发效率、代码可维护性和可扩展性。 一&#xff0c;MVC设计模式 Beego 框架采用了经典的 MVC&#xff08;Model-View-Controller&#xff09;设计…

Linux 上Redis 升级

背景&#xff1a; 随着我Ruby on Rails 的版本升级&#xff0c;sidekiq的升级&#xff0c;我的redis已经不能很好的支持了&#xff0c;当我启动sidekiq时出现如下报错&#xff1a; redis-client requires Redis 6 with HELLO command available (redis://127.0.0.1:6379/0) 意…

程序员的23大IONIO面试问题及答案

文章目录 1. 什么是IO流&#xff1f;2.java中有几种类型的流&#xff1f;3.字节流和字符流哪个好&#xff1f;怎么选择&#xff1f;4.读取数据量大的文件时&#xff0c;速度会很慢&#xff0c;如何选择流&#xff1f;5. IO模型有几种&#xff1f;6.阻塞IO &#xff08;blocking…

如何用Excel制作一张能在网上浏览的动态数据报表

前言 如今各类BI产品大行其道&#xff0c;“数据可视化”成为一个热门词汇。相比价格高昂的各种BI软件&#xff0c;用Excel来制作动态报表就更加经济便捷。今天小编就将为大家介绍一下如何使用葡萄城公司的纯前端表格控件——SpreadJS来实现一个Excel动态报表&#xff1a; 实…

华为鸿蒙操作系统简介及系统架构分析(2)

接前一篇文章&#xff1a;华为鸿蒙操作系统简介及系统架构分析&#xff08;1&#xff09; 本文部分内容参考&#xff1a; 鸿蒙系统学习笔记(一) 鸿蒙系统介绍 特此致谢&#xff01; 上一回对于华为的鸿蒙操作系统&#xff08;HarmonyOS&#xff09;进行了介绍并说明了其层次化…

C语言——高精度乘法

一、引子 高精度乘法相较于高精度加法和减法有更多的不同&#xff0c;加法和减法是一位对应一位进行操作的&#xff0c;而乘法是一个数的每一位对另一个数的每一位进行操作&#xff0c;需要的计算步骤更多。 二、核心算法 void Calculate(int num1[], int num2[], int numres…

代理IP解决了哪些问题?如何切换IP地址?

代理IP主要解决了以下问题&#xff1a; 1. 隐私保护&#xff1a;通过代理IP&#xff0c;用户可以隐藏自己的真实IP地址&#xff0c;增强网络匿名性&#xff0c;保护个人信息不被泄露。 2. 地理位置限制&#xff1a;某些网站或服务可能会根据用户的IP地址实施地域限制。使用代…

Linux使用javac编译报错-bash: javac: command not found

如果在Linux上使用javac编译时出现错误"bash: javac: command not found"&#xff0c;这通常意味着您的系统没有正确安装Java开发工具包&#xff08;JDK&#xff09;。 请按照以下步骤检查和解决该问题&#xff1a; 首先&#xff0c;确保已安装Java开发工具包&…

echart图表之仪表盘 pie 双盘 乃至多盘

效果展示&#xff1a; 代码&#xff1a; //首页转速盘 export const pieSpeed (params) > {let demoDataif (params.length ! 0) {demoData params?.map(item > {return {title: item.title,name: item.name,value: item.value,unit: item.unit || ,pos: item.pos,ran…

Android Studio开发之路(六)(合集)界面优化以及启动图标等

一、导航栏背景、字体修改 导航栏、状态栏等背景颜色的修改一般是在themes.xml文件中修改&#xff0c;android一个activity各个部件参考&#xff1a; colorPrimary,colorPrimaryDark等的意义 添加链接描述 但是问题在于&#xff1a;只在这里修改背景颜色的话&#xff0c;可能…

Google 提示:切忌滥用 DORA 指标

谷歌的 DevOps 研究与评估团队从事指标交易&#xff0c;即 DevOps 指标。但其最新的相关报告也警告不要过度使用这些指标。 DevOps 研究与评估小组&#xff08;DORA&#xff09;建议 IT 专业人员根据四个关键指标来评估团队绩效&#xff1a;部署频率&#xff0c;变更准备时间&a…

ubuntu18 安装 cmake v3.26.1

ubuntu18 安装 cmake v3.26.1 下载 & 解压configure 配置 & 安装 下载 & 解压 版本 v3.26.1 地址直接下载 https://cmake.org/files/v3.26/cmake-3.26.1.tar.gz wget命令下载 wget https://cmake.org/files/v3.26/cmake-3.26.1.tar.gz 解压 tar -xvzf cmake-3.2…

服务器不稳定因素

服务器不稳定因素 外贸网站主要目的是达到企业和客户紧密联系&#xff0c;提升客户对企业形象的认知度的效果&#xff0c;若租用的服务器不稳定&#xff0c;不仅影响网站的运行&#xff0c;对于网站搜索引擎优化以及用户体验等也有很大的影响&#xff0c;也会照成外贸企业的损失…

D : B DS二叉排序树_树中第k小的元素

Description 给定一个二叉排序树和一个整数k&#xff0c;要求输出树中第k个最小元素(k从1开始计数)。 Input 第一行输入t&#xff0c;表示有t个测试样例。 第二行起&#xff0c;首先输入n&#xff0c;接着输入n个整数表示一个二叉排序树&#xff0c;接着输入k。 以此类推共…

【数据结构和算法】---二叉树(1)--树概念及结构

目录 一、树的概念及结构1.1 树的概念1.2 树的相关概念1.3 树的表示1.4 树在实际中的运用 二、二叉树的概念及结构2.1 二叉树概念2.2 特殊的二叉树2.3 二叉树的性质2.4 二叉树的存储结构 三、树概念相关题目 一、树的概念及结构 1.1 树的概念 树是一种非线性的数据结构&#…

C#基础——匿名函数和参数不固定的函数

匿名函数、参数不固定的函数 匿名函数&#xff1a;没有名字&#xff0c;又叫做lambda表达式&#xff0c;具有简洁&#xff0c;灵活&#xff0c;可读的特性。 具名函数&#xff1a;有名字的函数。 1、简洁性&#xff1a;使用更少的代码实现相同的功能 MyDelegate myDelegate…

OpenCV技术应用(9)— 视频的暂停播放和继续播放

前言&#xff1a;Hello大家好&#xff0c;我是小哥谈。本节课就手把手教大家如何控制视频的暂停播放和继续播放&#xff0c;希望大家学习之后能够有所收获~&#xff01;&#x1f308; 目录 &#x1f680;1.技术介绍 &#x1f680;2.实现代码 &#x1f680;1.技术介绍…

vue2 按钮限制 点击按钮一前 灰色不可以点击 点击按钮一后 可以点击

代码 <template> <div> <button click"enableButtons">按钮1</button> <button :disabled"!isButton2Enabled" click"ann">按钮2</button> <button :disabled"!isButton3Enabled" c…