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

数据结构与算法之动态规划: LeetCode 1143. 最长公共子序列 (Ts版)

最长公共子序列

  • https://leetcode.cn/problems/longest-common-subsequence/description/

描述

  • 给定两个字符串 text1 和 text2,返回这两个字符串的最长 公共子序列 的长度。如果不存在 公共子序列 ,返回 0

  • 一个字符串的 子序列 是指这样一个新的字符串:它是由原字符串在不改变字符的相对顺序的情况下删除某些字符(也可以不删除任何字符)后组成的新字符串。

  • 例如,“ace” 是 “abcde” 的子序列,但 “aec” 不是 “abcde” 的子序列,两个字符串的 公共子序列 是这两个字符串所共同拥有的子序列

示例 1

输入:text1 = "abcde", text2 = "ace" 
输出:3 

解释:最长公共子序列是 “ace” ,它的长度为 3

示例 2

输入:text1 = "abc", text2 = "abc"
输出:3

解释:最长公共子序列是 “abc” ,它的长度为 3

示例 3

输入:text1 = "abc", text2 = "def"
输出:0

解释:两个字符串没有公共子序列,返回 0

提示

  • 1 <= text1.length, text2.length <= 1000
  • text1 和 text2 仅由小写英文字符组成

Typescript 版算法实现


1 ) 方案1: 动态规划

function longestCommonSubsequence(text1: string, text2: string): number {const m = text1.length, n = text2.length;const dp = new Array(m + 1).fill(0).map(() => new Array(n + 1).fill(0));for (let i = 1; i <= m; i++) {const c1 = text1[i - 1];for (let j = 1; j <= n; j++) {const c2 = text2[j - 1];if (c1 === c2) {dp[i][j] = dp[i - 1][j - 1] + 1;} else {dp[i][j] = Math.max(dp[i - 1][j], dp[i][j - 1]);}}}return dp[m][n];
};

http://www.mrgr.cn/news/82032.html

相关文章:

  • 开发小工具:ping地址
  • 大数据项目实战-招聘网站职位分析
  • MySQL数据库笔记——版本号机制和CAS(Compare And Swap)
  • HarmonyOS NEXT应用开发实战:免费练手的网络API接口分享
  • CSS 中 content换行符实现打点 loading 正在加载中的效果
  • phpIPAM V 1.7.0的数据库表简单说明
  • 后端开发-Maven
  • 细说STM32F407单片机CAN基础知识及其HAL驱动程序
  • FPGA多路红外相机视频拼接输出,提供2套工程源码和技术支持
  • 数据结构与算法之动态规划: LeetCode 674. 最长连续递增序列 (Ts版)
  • 配置中心 之 apollo
  • Postman[8] 断言
  • python文件操作相关(excel)
  • SpringJPA使用崩溃了
  • Web安全 - “Referrer Policy“ Security 头值不安全
  • RK3568 bsp 9 - USB调试记录
  • 深度学习blog- 数学基础(全是数学)
  • C++类与对象(三)-- 再谈构造函数(细嗦初始化列表)、static成员
  • 《机器学习》从入门到实战——逻辑回归
  • 机器学习之逻辑回归算法、数据标准化处理及数据预测和数据的分类结果报告
  • JDK 21 的重要特性
  • Java方法使用详解:从基本概念到进阶技巧
  • 一个响应式的系统 具有黑白俩个主题
  • 学习vue3的笔记
  • Vue 中el-table-column 进行循环,页面没渲染成功
  • 基本算法——聚类