2025年- H90-Lc198-- 1143. 最长公共子序列(多维动态规划)--Java版

news/2025/7/8 15:53:40

1.题目描述

在这里插入图片描述

2.思路

在这里插入图片描述
在这里插入图片描述
每个格子 dp[i][j] 都表示:

从字符串开头开始,分别取前 i 个字符和前 j 个字符之间的最优子结构(最长公共子序列的长度)

最终的 dp[m][n] 表示的就是:

“从头到尾整个 text1 和 text2 的最长公共子序列长度”。
答:不需要,因为我们构造 dp[i][j] 的时候,就是按“从左上到右下”的顺序,逐步比较两个字符串的公共子序列长度。

3.代码实现

class Solution {public int longestCommonSubsequence(String text1, String text2) {//获取 text1 和 text2 的长度,分别保存在变量 m 和 n 中int m=text1.length();int n=text2.length();//定义一个二维数组 dp,其中 dp[i][j] 表示 text1 的前 i 个字符和 text2 的前 j 个字符的最长公共子序列长度。初始化大小为 (m+1) x (n+1),额外的一行一列用来处理边界情况(空串时的 LCS)。int[][] dp=new int[m+1][n+1];for(int i=1;i<=m;i++){//外层循环遍历 text1 的每个字符,i 表示当前处理的字符在 text1 中的索引加一(因为 dp 数组是从 1 开始的)。//获取 text1 的第 i-1 个字符,保存在变量 c1 中char c1=text1.charAt(i-1);for(int j=1;j<=n;j++){//内层循环遍历 text2 的每个字符,j 表示当前处理的字符在 text2 中的索引加一。//获取 text2 的第 j-1 个字符,保存在变量 c2 中。char c2=text2.charAt(j-1);//如果 text1 和 text2 当前字符相同if(c1==c2){//则当前的 LCS 长度在原有的基础上 +1(即在 text1[0..i-2] 和 text2[0..j-2] 的 LCS 长度基础上加 1)。dp[i][j]=dp[i-1][j-1]+1;}else{//如果字符不同,那么当前的 LCS 就是从两个子问题中取较大的一个://不选 text1[i-1],即 dp[i-1][j]//不选 text2[j-1],即 dp[i][j-1]dp[i][j]=Math.max(dp[i-1][j],dp[i][j-1]);}}}return dp[m][n];}
}

https://dhexx.cn/news/show-5552599.html

相关文章

RestTemplate实战

介绍 RestTemplate 是 Spring Framework 提供的一个同步 HTTP 客户端&#xff0c;用于与外部服务进行交互。它封装了常见的 HTTP 请求操作&#xff0c;简化了客户端发送 HTTP 请求、接收响应的过程。通过 RestTemplate&#xff0c;你可以轻松地调用 RESTful APIs&#xff0c;处…

FastAPI+React19 ERP系统实战 第01期

一、基础环境 1.1 项目依赖 package.json {"name": "erp-web","version": "1.0.0","description": "ERP系统前端 - React 19","main": "index.js","type": "module",…

Debian、Buildroot 和 Ubuntu 都是基于 Linux 的系统区别

文章目录 前言**1. Debian****2. Buildroot****3. Ubuntu****核心区别总结****如何选择&#xff1f;** 总结 前言 提示&#xff1a;这里可以添加本文要记录的大概内容&#xff1a; 项目需要&#xff1a; 提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供参考…

SQL128 统计2021年未完成试卷作答数大于1的有效用户

题目理解 SQL128 未完成试卷数大于1的有效用户 我们需要统计2021年每个未完成试卷作答数大于1的有效用户的数据。有效用户的定义是&#xff1a; 完成&#xff08;提交了&#xff0c;有分数&#xff09;试卷作答数至少为1未完成&#xff08;未提交&#xff0c;没有分数&#…

小型化电源滤波器:性能与尺寸的完美平衡——解析GRJ20系列

电源滤波器的核心功能是滤除电源线路中的高频噪声和电磁干扰&#xff0c;确保设备获得稳定的电源输入&#xff0c;同时防止设备自身产生的干扰影响其他系统。在实际应用中&#xff0c;滤波器需要针对不同频段的干扰进行优化处理&#xff0c;例如低频干扰&#xff08;通常在1 kH…

【电赛培训】运算放大器、滤波器

一、放大器基础 在数字电路发明之前&#xff0c;使用的都是模拟计算机&#xff0c;其中最重要的器件就是运算放大器&#xff0c;模拟电路的速度远高于数字电路&#xff0c;例如&#xff1a;CPU是数字电路&#xff0c;最高主频可达到4或5个G&#xff0c;而模拟电路几乎没有上限&…

图灵完备之路(数电学习三分钟)----内存原理

我们在前面已经将计算机的运算控制&#xff0c;时序控制以及数据管理都设计好了&#xff0c;此时我们已经可以完成少部分数据量的运算了&#xff0c;但如果我们要运行多个/多种算式在不同时序输出到不同通道的任务时该怎么办&#xff1f;当然可以通过设计出满足要求的定制电路来…

PyTorch中 item()、tolist()使用详解和实战示例

在 PyTorch 中&#xff0c;.item() 和 .tolist() 是两个常用于从 Tensor 中提取 Python 原生数据的方法&#xff0c;尤其在调试、日志记录或将结果传给非张量库时非常有用。下面是它们的详解与代码示例。 1. .item() 方法 用途&#xff1a; 将仅包含一个元素的张量&#xff0…

量化交易中的隐藏模式识别:基于潜在高斯混合模型的机会挖掘

*——从市场噪声中提取黄金信号的数学艺术** > 2025年3月,某对冲基金使用潜在高斯混合模型捕捉到铜期货的异常波动模式,提前布局实现单月收益47%。核心代码仅20行,却颠覆了传统技术分析范式。 --- ### 01 市场迷思:为何90%的交易者失败? 金融市场本质是**非…

FFmpeg录制屏幕及声音

目录 前言 一、dshow 二、gdigrab(强烈建议) 抓取整张桌面 抓取屏幕中特定的一个窗口 抓取屏幕及声音 前言 在Windows系统使用抓取屏幕数据有两种方法&#xff1a;gdigrab和dshow。 一、dshow 使用前需要先安装screen-capture-recorder&#xff0c;下载地址 下载完后直接…