news 2026/4/2 6:12:52

最长公共子序列

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
最长公共子序列

题目链接

1143. 最长公共子序列 - 力扣(LeetCode)

思路:

1. 首先了解到题目所说的子序列指的是,只要顺序能对的上,就算子序列

2. 我们考虑到本题,适合使用 dp 动态规划思想去做,对于 text1 text2 俩个字符串,我们模拟取最大值, dp[i][j] 数组 代表了 text[i-1] 和 text[j-1] 当前元素字符串所能得到的 最大子序列的结果值,那么我们需要特殊考虑 当 dp[0][j] dp[i][0] 的元素,这些都需要赋初值为0,

2. dp[i][j] 会出现俩种情况,text1[i-1] 等于 text2[j-1] 或者不相等,首先我们看相等的情况,相等的话 dp[i][j] 应该是等于 dp[i-1][j-1]+1 等于在不包含本次相等情况的字符时,所得到的最大值 +1

text1[i-1] 和 text2[j-1] 不相等的情况那就是,需要比较,在 不取text1当前位置 i-1 的情况,以及 不取 text2 当前位置 j-1 的情况,俩个之中的最大值。就能得到当前位置的结果,简单说就是,不包含 当前位置 i 的字符元素 或者 当前位置 j 的字符元素

代码:

/** * @param {string} text1 * @param {string} text2 * @return {number} */ var longestCommonSubsequence = function (text1, text2) { let dp = new Array(text1.length + 10).fill(0).map(item => new Array(text2.length + 10).fill(0)) for (let i = 0; i <= text1.length; i++) { for (let j = 0; j <= text2.length; j++) { if (i == 0 || j == 0) { dp[i][j] = 0 continue } if (text1[i - 1] === text2[j - 1]) { 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[text1.length][text2.length] };
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/28 4:07:06

视频通话SDK选择指南:十大主流供应商全面解析

视频通话SDK选择指南&#xff1a;十大主流供应商全面解析在远程协作、在线教学、客户服务等领域的快速发展下&#xff0c;视频通话SDK已成为各类应用实现实时互动功能的关键技术。选择合适的SDK能有效增强产品竞争力。本文基于市场最新动态&#xff0c;对十家主流视频通话SDK供…

作者头像 李华
网站建设 2026/4/3 1:31:17

【干货分享】2026软件测试面试题汇总

前言 本篇分享的软件测试面试题内容主要包括&#xff1a;测试总体、需求分析、测试计划、测试策略、测试用例、缺陷报告、测试总结报告、白盒测试、单元测试、集成测试、系统测试、验收测试等等26个模块。 1. 什么是软件测试&#xff1f; 答&#xff1a;为了发现程序中的错误…

作者头像 李华
网站建设 2026/4/3 5:17:09

Python+Vue的校园招聘网站的设计与实现_ Pycharm django flask

收藏关注不迷路&#xff01;&#xff01;需要的小伙伴可以发链接或者截图给我 项目介绍 本系统共有管理员,求职者,公司3个角色&#xff0c;具体功能如下&#xff1a; 1.管理员角色的功能主要包括管理员登录&#xff0c;求职者管理&#xff0c;公司管理&#xff0c;岗位分类管理…

作者头像 李华