news 2026/7/28 6:19:33

LeetCode热题--1143. 最长公共子序列--中等

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
LeetCode热题--1143. 最长公共子序列--中等

题目

给定两个字符串 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 。

题解

classSolution{publicintlongestCommonSubsequence(Stringtext1,Stringtext2){char[]t=text2.toCharArray();intm=t.length;int[]f=newint[m+1];for(charx:text1.toCharArray()){intpre=0;// f[0]for(intj=0;j<m;j++){inttmp=f[j+1];f[j+1]=x==t[j]?pre+1:Math.max(f[j+1],f[j]);pre=tmp;}}returnf[m];}}

解析

出自:教你一步步思考动态规划:从记忆化搜索到递推(Python/Java/C++/Go)

classSolution{publicintlongestCommonSubsequence(Stringtext1,Stringtext2){// 将 text2 转换为字符数组,便于快速访问每个字符char[]t=text2.toCharArray();// 获取 text2 的长度,记为 mintm=t.length;// 创建一维 DP 数组 f,长度为 m+1;f[j] 表示当前 text1 前缀与 text2[0..j-1] 的 LCS 长度// 初始时所有值为 0(因为未开始匹配)int[]f=newint[m+1];// 遍历 text1 中的每一个字符 xfor(charx:text1.toCharArray()){// pre 用于保存上一轮(即 text1 上一个字符处理时)的 f[j] 值,// 相当于二维 DP 中的 dp[i-1][j-1]intpre=0;// 对应 f[0],即空字符串与任意前缀的 LCS 长度为 0// 遍历 text2 的每个位置 j(从 0 到 m-1)for(intj=0;j<m;j++){// 先保存当前 f[j+1] 的旧值(即上一行的 dp[i-1][j+1]),// 因为它将在下一次循环中作为 "pre"(即 dp[i-1][j])使用inttmp=f[j+1];// 状态转移:// 如果当前字符 x == t[j],说明可以扩展 LCS:f[j+1] = pre + 1// 否则,取不包含 x 或不包含 t[j] 的最大值:max(f[j+1], f[j])f[j+1]=x==t[j]?pre+1:Math.max(f[j+1],f[j]);// 更新 pre 为 tmp(即上一行的 f[j+1]),供下一次 j 循环使用pre=tmp;}}// 最终结果存储在 f[m] 中,表示 text1 与整个 text2 的 LCS 长度returnf[m];}}
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/19 20:36:42

老板让我用springboot对接第三方,如何更优雅的对接

根据实际场景需求去选择需要的解决方案。HTTP客户端选择方案&#xff1a;RestTemplate、Feign、WebClient。同步方案&#xff1a;全量同步、增量同步、实时同步 三种核心方案。一、HTTP客户端方案Spring Boot 对接第三方接口有多种常用方案&#xff0c;适配不同场景&#xff0c…

作者头像 李华
网站建设 2026/7/22 22:35:21

吐血推荐10个一键生成论文工具,自考学生轻松搞定毕业论文!

吐血推荐10个一键生成论文工具&#xff0c;自考学生轻松搞定毕业论文&#xff01; AI 工具正在改变论文写作的未来 在自考学生群体中&#xff0c;毕业论文一直是一个令人头疼的问题。无论是选题困难、资料查找繁琐&#xff0c;还是写作过程中的逻辑梳理和语言表达&#xff0c;都…

作者头像 李华
网站建设 2026/7/27 15:13:13

高频信号处理篇---单差分对电路

一句话核心比喻单差分对电路就像一个极其灵敏的“电流天平”。它不关心“绝对重量”&#xff08;输入的绝对电压&#xff09;&#xff0c;只关心“两边谁重谁轻”&#xff08;两个输入电压的差值&#xff09;。1. 先看看这个“天平”长什么样想象一个简单的结构&#xff1a;一个…

作者头像 李华
网站建设 2026/7/23 22:30:35

实时操作系统中CANFD协议驱动集成操作指南

实时操作系统中CANFD协议驱动集成实战指南当嵌入式通信撞上“数据洪流”&#xff1a;我们为何需要CANFD RTOS&#xff1f;你有没有遇到过这样的场景&#xff1f;在开发一辆智能电动车的电控系统时&#xff0c;电池管理系统&#xff08;BMS&#xff09;每10毫秒就要上报一次包含…

作者头像 李华
网站建设 2026/7/18 16:40:24

CANN易用性案例汇总

CANN易用性案例汇总 前言 易用性是软件生态的关键一环&#xff0c;CANN生态团队在2025年也从算子到模型至下而上的对易用性进行改进。在算子开发层面&#xff0c;围绕着算子编程效率、算子编译部署效率、代码可读性从开发、编译到维护全方面地降低算子的上手难度&#xff1b;…

作者头像 李华
网站建设 2026/7/15 4:30:35

基于SpringBoot的流浪动物救助系统(源码+lw+部署文档+讲解等)

课题介绍 本课题聚焦流浪动物救助规范化与社会化协同需求&#xff0c;设计并实现一套基于Spring Boot框架的流浪动物救助系统&#xff0c;旨在破解传统流浪动物救助中信息分散、救助资源调配低效、救助流程不透明、领养与救助衔接不畅等痛点问题&#xff0c;精准匹配救助人员便…

作者头像 李华