步骤一、确定状态:

确定dp数组及下标含义

dp[i][j]:长度为[0, i - 1]的字符串text1与长度为[0, j - 1]的字符串text2的最长 公共子序列为dp[i][j]

步骤二、推断状态方程:

主要就是两大情况: text1[i - 1] 与 text2[j - 1]相同,text1[i - 1] 与 text2[j - 1]不相同

如果text1[i - 1] 与 text2[j - 1]相同,那么找到了一个公共元素,所以 dp[i][j] = dp[i - 1][j - 1] + 1;

如果text1[i - 1] 与 text2[j - 1]不相同,那就看看text1[0, i - 2]与text2[0, j - 1]的最长公共子序列 和 text1[0, i - 1]与text2[0, j - 2]的最长公共子序列, 取最大的。

即:dp[i][j] = max(dp[i - 1][j], dp[i][j - 1]);

步骤三、规定初始条件:

初始条件:

全局初始化都是0

步骤四、计算顺序:

从递推公式,可以看出,有三个方向可以推出dp[i][j], 如图:

从前向后,从上到下来遍历这个矩阵。
class Solution:def longestCommonSubsequence(self, text1: str, text2: str) -> int:if not text1 or not text2:return 0len1, len2 = len(text1) + 1, len(text2) + 1dp = [[0 for _ in range(len1)] for _ in range(len2)] # 初始化for i in range(1, len2):for j in range(1, len1):if text2[i-1] == text1[j-1]:dp[i][j] = dp[i-1][j-1] + 1else:dp[i][j] = max(dp[i][j-1], dp[i-1][j])return dp[-1][-1]

116. Leetcode 1143. 最长公共子序列 (动态规划-子序列问题)相关推荐

  1. LeetCode——1143. 最长公共子序列(Longest Common Subsequence)[中等]——分析及代码(Java)

    LeetCode--1143. 最长公共子序列[Longest Common Subsequence][中等]--分析及代码[Java] 一.题目 二.分析及代码 1. 动态规划 (1)思路 (2)代 ...

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

    1. 题目 给定两个字符串 text1 和 text2,返回这两个字符串的最长公共子序列的长度. 一个字符串的 子序列 是指这样一个新的字符串:它是由原字符串在不改变字符的相对顺序的情况下删除某些字符 ...

  3. 【动态规划】LeetCode 1143最长公共子序列

    题目链接:力扣 思路: 动态规划: dp[i][j]表示text1[0:i) 和 text2[0:j)的最长公共子序列的长度 上述表示中,text1[0:i)的长度为i的前缀,text2[0:j)表示 ...

  4. leetcode - 1143. 最长公共子序列

    给定两个字符串 text1 和 text2,返回这两个字符串的最长公共子序列. 一个字符串的 子序列 是指这样一个新的字符串:它是由原字符串在不改变字符的相对顺序的情况下删除某些字符(也可以不删除任何 ...

  5. Leetcode 1143.最长公共子序列(求长度)

    Time: 20190906 Type: Medium 题目描述 给定两个字符串text1和text2,返回它们的最长公共子序列. 子序列是通过原字符串删除一些字符(可以不删)生成的新的字符串,不改变 ...

  6. leetcode 1143. 最长公共子序列

    难度:中等 频次:64 **题目:**给定两个字符串 text1 和 text2,返回这两个字符串的最长 公共子序列 的长度.如果不存在 公共子序列 ,返回 0 . 一个字符串的 子序列 是指这样一个 ...

  7. LeetCode 1143 最长公共子序列

    给定两个字符串 text1 和 text2,返回这两个字符串的最长公共子序列的长度. 一个字符串的 子序列 是指这样一个新的字符串:它是由原字符串在不改变字符的相对顺序的情况下删除某些字符(也可以不删 ...

  8. leetcode 1143. 最长公共子序列(dp)

    给定两个字符串 text1 和 text2,返回这两个字符串的最长 公共子序列 的长度.如果不存在 公共子序列 ,返回 0 . 一个字符串的 子序列 是指这样一个新的字符串:它是由原字符串在不改变字符 ...

  9. 115. Leetcode 718. 最长重复子数组 (动态规划-子序列问题)

    步骤一.确定状态: 确定dp数组及下标含义 dp[i][j]表示的是长度为i的A数组和长度为j的B数组公共的长度最长的子数组的长 度. 步骤二.推断状态方程: 考虑下dp[i][j], 因为这里的子数 ...

最新文章

  1. 如何更新你的机器学习模型?手把手带你设计一个可持续的预测模型!
  2. FIR滤波器设计(包括Verilog HDL设计以及MATLAB设计)
  3. c++读取utf8文件_【Python】File文件对象
  4. wifi协议栈_一文读懂米家部分智能硬件:米家Zigbee及WiFi模块拆解分析
  5. Java基础--通过反射获取私有的成员方法示例代码
  6. 小世界网络模型代码 c 语言,新的小世界网络模型实现文本特征的提取方法与流程...
  7. 安装问题的审计(产生漏洞,抓包)
  8. 计算机声音与视频教程,电脑怎么录屏幕视频带声音 电脑录屏幕视频带声音教程...
  9. mysql rds 定时执行_如何使用脚本自动备份阿里云rds数据库
  10. 数学建模 数理统计模型
  11. 如何用安装启动盘启动计算机,如何使用U盘启动进入PE安装系统,小编教你如何安装...
  12. 人工智能知识全面讲解:生成对抗网络的应用
  13. 【一级讲解】韩信点兵——中国剩余定理
  14. 常见数据同步工具的对比
  15. 点击小图查看大图的定位功能
  16. 从苏宁电器到卡巴斯基第34篇:我与卡巴斯基的邂逅(上)
  17. 基于JAVA校园快递联盟系统计算机毕业设计源码+系统+mysql数据库+lw文档+部署
  18. 将mqm用户的环境变量写入配置文件
  19. 点击按钮变成灰色不可再次点击
  20. 阿里云服务器安装Docker

热门文章

  1. 728. Self Dividing Numbers
  2. fastjson序列化原理详解
  3. Android Drawable 转化成 Bitmap
  4. linux 系统负载
  5. jQuery之表格变色
  6. About JXTA message reliable design
  7. VS.NET中的一些拖放操作
  8. TCP-IP详解:快速重传与快速恢复
  9. 进临界区(关全局中断)是否会影响数据的接收?
  10. c语言#include后的尖括号和双引号有什么区别?