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];}}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1136068.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

西门子博图PID仿真对象库,可以模拟现场温度,阀门等实物对象,训练PID调节,省去买设备

西门子博图PID仿真对象库&#xff0c;可以模拟现场温度&#xff0c;阀门等实物对象&#xff0c;训练PID调节&#xff0c;省去买设备&#xff0c;选1500硬件组态支持模拟器运行&#xff0c;就是在没有任何硬件的情况下非常接近现场设备属性&#xff0c;调PID&#xff0c;支持自动…

比亚迪逆风突围:2025年销量飙升62%,海狮7热销单月冲破3千!

最新数据显示&#xff0c;2025年中国新能源汽车巨头比亚迪在日本市场实现了令人瞩目的逆袭&#xff0c;全年销量增长62%&#xff0c;达到3870辆。这一成绩不仅打破了日本电动汽车市场的增长僵局&#xff0c;也凸显了比亚迪在全球市场布局中的战略韧性。一、 市场环境&#xff1…

基于DELM深度极限学习机的回归预测MATLAB代码教程——代码清晰、注释详尽、可读取EXCE...

基于DELM深度极限学习机的回归预测MATLAB代码 代码注释清楚。 main为主程序&#xff0c;可以读取EXCEL数据&#xff0c;使用换自己数据集。 很方便&#xff0c;初学者容易上手。最近在折腾回归预测模型&#xff0c;发现DELM&#xff08;深度极限学习机&#xff09;用起来还挺…

三菱Q系列PLC ,QD77MS16走总线控制伺服项目,实际应用的 程序结构清晰明了,通俗易懂...

三菱Q系列PLC ,QD77MS16走总线控制伺服项目&#xff0c;实际应用的 程序结构清晰明了&#xff0c;通俗易懂&#xff0c;8个伺服&#xff0c;PLC程序有完整的注释&#xff0c;有伺服设定参数&#xff0c;三菱触摸屏程序&#xff0c;电气BOM &#xff0c;电气I/O表&#xff0c;完…

AD画PCB通俗解释:什么是PCB封装?

从“画几个焊盘”到量产可靠&#xff1a;深入理解AD中PCB封装的真正意义你有没有遇到过这样的情况——原理图画得一丝不苟&#xff0c;网络连接清清楚楚&#xff0c;结果一导入PCB&#xff0c;元件飞得到处都是&#xff1f;或者更糟&#xff1a;板子打回来后发现某个芯片根本焊…

2026开战:AI眼镜“百镜大战”打响,国内厂商领衔掀起“神仙打架”!

2026年1月7日&#xff0c;全球最大的消费电子展CES在美国拉斯维加斯盛大开幕。本届展会中国AI眼镜赛道可谓是“神仙打架”&#xff0c;头部大厂齐聚&#xff0c;抢眼的硬件层出不穷&#xff0c;27家中国AI眼镜、VR、AR厂商联手组团&#xff0c;点燃了现场观众的热情。作为记者&…

手把手玩转昆仑通泰触摸屏与V20变频器USS通讯

昆仑通泰触摸屏与v20变频器uss通讯&#xff0c;控制变频器 1&#xff0c;通过触摸屏与变频器uss通讯 2&#xff0c;通过触摸屏读取变频器电压&#xff0c;电流&#xff0c;频率 3&#xff0c;通过触摸屏设定变频器正反转&#xff0c;设定频率&#xff0c;加速&#xff0c;减速时…

x64dbg调试多线程程序注意事项

用x64dbg调试多线程程序&#xff1f;别让线程“乱跑”毁了你的分析你有没有遇到过这种情况&#xff1a;在x64dbg里设了个断点&#xff0c;结果一运行&#xff0c;程序频繁中断——不是你想调试的那个线程触发的&#xff0c;而是某个后台心跳线程、日志刷新线程或者GUI重绘线程不…

【Linux】PVE系统创建规范的VM模版

基于 Ubuntu Cloud Image 在 Proxmox VE 上创建一个 可用于制作模板的虚拟机。 注意&#xff01;如果未将 local-lvm 和 local 分区合并&#xff0c; --scsi0 参数的值应该是 local-lvm Proxmox VE Linux 模板创建规范&#xff08;Ubuntu 22.04 Cloud Image 示例&#xff09; 1…

H5U的一个比较完整的程序框架. PLC还是性价比挺高,特别是对于伺服的总线。 主打的伺服控制...

H5U的一个比较完整的程序框架. PLC还是性价比挺高&#xff0c;特别是对于伺服的总线。 主打的伺服控制是ETHERCAT总线 程序写的条理分明&#xff0c;清晰易懂&#xff0c;注释清楚&#xff0c;对于初次使用汇川的总线控制有很好的参考价值&#xff0c;。 气缸的控制宝库伸出、…

基于SpringBoot的旅游出行指南系统(源码+lw+部署文档+讲解等)

课题介绍本课题聚焦旅游出行场景下精准指南服务与信息整合需求&#xff0c;设计并实现一套基于Spring Boot框架的旅游出行指南系统&#xff0c;旨在破解传统旅游出行中攻略信息分散、目的地信息不对称、行程规划低效、特色资源难挖掘等痛点问题&#xff0c;精准匹配游客便捷获取…

机器学习中的逻辑回归

什么是逻辑回归&#xff1f;想象一下&#xff0c;你在玩一个游戏&#xff1a;根据一些线索&#xff0c;猜一个人是“猫派”还是“狗派”。机器学习里的逻辑回归&#xff08;Logistic Regression&#xff09;就是这样一个“猜分类”的算法。它不是用来预测连续的数字&#xff08…

Elasticsearch JVM堆内存使用图解说明

Elasticsearch JVM堆内存使用图解说明 一次查询背后的“内存战争” 你有没有遇到过这样的场景&#xff1a;集群刚上线时响应飞快&#xff0c;但随着数据量增长&#xff0c;查询延迟逐渐升高&#xff0c;偶尔还出现节点失联&#xff1f;监控图表上&#xff0c;JVM堆内存使用率…

一文说清AUTOSAR架构结构:核心要点全梳理

深入AUTOSAR架构&#xff1a;从分层设计到工程落地的全链路解析 汽车电子系统正在经历一场静默却深刻的变革。十年前&#xff0c;一辆车的ECU&#xff08;电子控制单元&#xff09;数量不过十几个&#xff1b;如今&#xff0c;高端车型的ECU已超过100个&#xff0c;软件代码量逼…

基于SpringBoot的旅游分享点评网系统(源码+lw+部署文档+讲解等)

课题介绍本课题聚焦旅游场景下用户分享互动与真实点评需求&#xff0c;设计并实现一套基于Spring Boot框架的旅游分享点评网系统&#xff0c;旨在破解传统旅游信息获取中真实体验缺失、用户互动不足、优质攻略传播不畅、点评信息分散等痛点问题&#xff0c;精准匹配游客获取真实…

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

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

labview通过AxtiveX操作excel,不需要NIReport.llb也可以生成报表

labview通过AxtiveX操作excel&#xff0c;不需要NIReport.llb也可以生成报表。听说有人嫌NI Report太笨重&#xff1f;来试试用LabVIEW直接调教Excel&#xff01;今天咱们手把手玩转ActiveX&#xff0c;不用任何第三方工具包&#xff0c;直接让Excel乖乖听话生成报表。先扔个硬…

LABVIEW与三菱PLC通迅:实现数据批量读写的库

LABVIEW和三菱PLC通迅&#xff0c;实现数据批量读写的库&#xff01;凌晨三点半的工业自动化车间&#xff0c;PLC红色指示灯在控制柜里规律闪烁。当我在LabVIEW前面板拖动数值控件时&#xff0c;透过MX Component的DLL接口&#xff0c;三菱Q系列PLC的D9000寄存器组突然集体&quo…

Python 精确计算:告别浮点数陷阱,decimal 模块实战指南

目录Python 精确计算&#xff1a;告别浮点数陷阱&#xff0c;decimal 模块实战指南第一章&#xff1a;浮点数的“原罪”&#xff1a;为什么你的计算结果总是怪怪的&#xff1f;1.1 罪魁祸首&#xff1a;IEEE 754 标准1.2 什么时候我们需要绝对精确&#xff1f;第二章&#xff1…

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

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