力扣hot100 最长公共子序列 LCS 二维DP 空格技巧

Problem: 1143. 最长公共子序列

文章目录

思路

👨‍🏫 参考

Code

⏰ 时间复杂度: O ( n m ) O(nm) O(nm)

🌎 空间复杂度: O ( n m ) O(nm) O(nm)

Java 复制代码
class Solution {
	public int longestCommonSubsequence(String s1, String s2)
	{
		int n = s1.length();
		int m = s2.length();
		char[] ss1 = (" " + s1).toCharArray();
		char[] ss2 = (" " + s2).toCharArray();
		int[][] f = new int[n + 1][m + 1];
		for (int i = 0; i <= n; i++)
			Arrays.fill(f[i], 1);//有了第一个空格,任何位置的公共子序列长度都是 1 
		
		for (int i = 1; i <= n; i++)
			for (int j = 1; j <= m; j++)
				if (ss1[i] == ss2[j])
					f[i][j] = f[i - 1][j - 1] + 1;
				else
					f[i][j] = Math.max(f[i - 1][j], f[i][j - 1]);
//		减去最开始追加的空格
		return f[n][m] - 1;
	}
}
相关推荐
不穿格子的程序员5 分钟前
从零开始刷算法——贪心篇1:跳跃游戏1 + 跳跃游戏2
算法·游戏·贪心
大江东去浪淘尽千古风流人物8 分钟前
【SLAM新范式】几何主导=》几何+学习+语义+高效表示的融合
深度学习·算法·slam
hqyjzsb15 分钟前
盲目用AI提效?当心陷入“工具奴”陷阱,效率不增反降
人工智能·学习·职场和发展·创业创新·学习方法·业界资讯·远程工作
铉铉这波能秀16 分钟前
LeetCode Hot100数据结构背景知识之列表(List)Python2026新版
数据结构·leetcode·list
重生之我是Java开发战士22 分钟前
【优选算法】模拟算法:替换所有的问号,提莫攻击,N字形变换,外观数列,数青蛙
算法
仟濹27 分钟前
算法打卡 day1 (2026-02-06 周四) | 算法: DFS | 1_卡码网98 可达路径 | 2_力扣797_所有可能的路径
算法·leetcode·深度优先
yang)28 分钟前
欠采样时的相位倒置问题
算法
历程里程碑32 分钟前
Linux20 : IO
linux·c语言·开发语言·数据结构·c++·算法
A尘埃33 分钟前
物流公司配送路径动态优化(Q-Learning算法)
算法
天若有情67334 分钟前
【自研实战】轻量级ASCII字符串加密算法:从设计到落地(防查岗神器版)
网络·c++·算法·安全·数据安全·加密