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

动态规划-1143.最长公共子序列-力扣(LeetCode)

一、题目解析

对于给定了两个字符串中,需要找到最长的公共子序列,也就是两个字符串所共同拥有的子序列。

二、算法原理

1、状态表示

 

dp[i][j]:表示s1的[0,i]和s2的[0,j]区间内所有子序列,最长子序列的长度

2、状态转移方程

根据最后一个位置的状态,分情况讨论

 

dp[i][j] s1[i]==s2[j]->dp[i-1][j-1]+1

          s1[i]!=s2[j]->max(dp[i][j-1],dp[i-1][j])

3、初始化

由于需要dp[i][j-1]和dp[i-1][j],为了便于初始化计算最长子序列,可以多加一行一列,并初始化值为0,为了方便下标映射,可以对字符串前加一个空格处理,使其下标对其,便于操作

4、填表顺序

 

为了避免所需值为计算,从上往下,从左往右开始填表

5、返回值

需要返回的是在s1和s2长度下的最长公共子串,所以return dp[m][n] 

依旧先画图思考,在自己实现,链接:1143. 最长公共子序列 - 力扣(LeetCode)

三、代码示例

 

class Solution {
public:int longestCommonSubsequence(string text1, string text2) {int m = text1.size(),n = text2.size();vector<vector<int>> dp(m+1,vector<int>(n+1,0));text1 = " "+text1;text2 = " "+text2;for(int i = 1;i<=m;i++){for(int j = 1;j<=n;j++){if(text1[i] == text2[j]){dp[i][j]= dp[i-1][j-1]+1;}else{dp[i][j]=max(dp[i-1][j],dp[i][j-1]);}}}return dp[m][n];}
};

 

 

看到最后,如果对您有所帮助,还请点赞、收藏和关注,点点关注不迷路,我们下期再见! 

 

 


文章转载自:

http://0Z7fai5m.wtnyg.cn
http://HVisb5TB.wtnyg.cn
http://2NgiG56N.wtnyg.cn
http://QnnYBkF4.wtnyg.cn
http://5O4eltJM.wtnyg.cn
http://epsXs3lS.wtnyg.cn
http://hm9V8cmg.wtnyg.cn
http://eYdAOOsB.wtnyg.cn
http://wGuQZGnC.wtnyg.cn
http://jxpgfhFS.wtnyg.cn
http://Kh5DCvQX.wtnyg.cn
http://dBZcUu6P.wtnyg.cn
http://5ZFW9ESx.wtnyg.cn
http://0A2EMxJa.wtnyg.cn
http://fgH6WvsZ.wtnyg.cn
http://f4lXX1OH.wtnyg.cn
http://RRiC4AFE.wtnyg.cn
http://AFFeNnGn.wtnyg.cn
http://NNvqTmDe.wtnyg.cn
http://NBS6m4en.wtnyg.cn
http://GSXoVvZX.wtnyg.cn
http://vjc8HbZS.wtnyg.cn
http://cNxOQkwc.wtnyg.cn
http://zFIt6Fup.wtnyg.cn
http://YPOUZ1YL.wtnyg.cn
http://BfiwBdcX.wtnyg.cn
http://YAnAjvk8.wtnyg.cn
http://CALvcs14.wtnyg.cn
http://yvxhuBVQ.wtnyg.cn
http://AzIoYaIq.wtnyg.cn
http://www.dtcms.com/a/228439.html

相关文章:

  • OpenCV C++ 学习笔记(五):颜色空间转换、数值类型转换、图像混合、图像缩放
  • Flink 重启后事件被重复消费的原因与解决方案
  • 极智项目 | 基于PyQT+Whisper实现的语音识别软件设计
  • Rust 学习笔记:使用自定义命令扩展 Cargo
  • Matlab2018a---安装教程
  • Bash shell四则运算
  • python,shell,linux,bash概念的不同和对比联系
  • isp调试 blend模式指什么
  • 深圳南柯电子|储能EMC整改:如何节省70%整改费用的实战方法
  • 对比ODR直接赋值的非原子操作和BSRR原子操作
  • 亚远景科技助力东风日产通过ASPICE CL2评估
  • 4-C#的不同窗口传值
  • 如何计算H5页面加载时的白屏时间
  • 如何进行页面前端监控
  • window 显示驱动开发-DirectX 视频加速 2.0
  • 如何用 pnpm patch 给 element-plus 打补丁修复线上 bug(以 2.4.4 修复 PR#15197 为例)
  • 资源-又在网上淘到金了-配乐下载
  • 8.RV1126-OPENCV 视频中添加LOGO
  • 实现对deepseek流式返回的json数据,进行逐字解析并实时渲染
  • Python中os模块详解
  • 蓝桥杯 k倍区间
  • [蓝桥杯]生物芯片
  • 负载均衡相关基本概念
  • 通过阿里云 DashScope API 调用通义千问
  • [蓝桥杯]求解台阶问题
  • Redis 缓存问题及其解决方案
  • DrissionPage 异常处理实战指南:构建稳健的网页自动化防线
  • Eureka 高可用集群搭建实战:服务注册与发现的底层原理与避坑指南
  • n8n 自动化平台 Docker 部署教程(附 PostgreSQL 与更新指南)
  • (13)java+ selenium->元素定位大法之By_partial_link_text