当前为游客只读模式。登录后可提交代码判题并保存草稿与进度。

最长公共子序列

中等longestCommonSubsequence()
时间限制 2000 ms内存限制 128 MB复杂度要求 时间 O(m*n),空间 O(m*n)(可滚动数组优化到 O(min(m,n)))

最长公共子序列

给定两个字符串 text1 和 text2,返回它们的最长公共子序列的长度。如果不存在公共子序列,返回 0。

一个字符串的子序列是指这样一个新字符串:由原字符串在不改变字符相对顺序的情况下删除某些字符(也可以不删除任何字符)后组成的新字符串。

例如,"ace" 是 "abcde" 的子序列,但 "aec" 不是 "abcde" 的子序列。两个字符串的公共子序列是由这两个字符串共同拥有的子序列。

约定

  • 1 <= text1.length, text2.length <= 1000
  • text1 和 text2 都只由小写英文字符组成。

输入

  • text1:第一个字符串
  • text2:第二个字符串

输出

最长公共子序列的长度。

示例一

输入:

text1 = "abcde", text2 = "ace"

输出:

3

解释:最长公共子序列是 "ace",长度为 3。

示例二

输入:

text1 = "abc", text2 = "abc"

输出:

3

解释:最长公共子序列是 "abc"。

示例三

输入:

text1 = "abc", text2 = "def"

输出:

0

解释:两个字符串没有公共子序列,返回 0。

复杂度要求

  • 时间复杂度:O(m * n),m、n 分别为两个字符串长度
  • 空间复杂度:O(m * n)
Loading...

输入

["abcde","ace"]

预期输出

3
自定义用例