1143. Longest Common Subsequence
LeetCode 1143. Longest Common Subsequence
Description
Given two strings text1
and text2
, return the length of their longest common subsequence. If there is no common subsequence, return 0
.
A subsequence of a string is a new string generated from the original string with some characters (can be none) deleted without changing the relative order of the remaining characters.
For example,
"ace"
is a subsequence of"abcde"
.
A common subsequence of two strings is a subsequence that is common to both strings.
Example 1:
Example 2:
Constraints:
1 <= text1.length, text2.length <= 1000
text1
andtext2
consist of only lowercase English characters.
Tags
Dynamic Programming
Solution
双串LCS问题。dp[i][j]
表示第一串[0..i],第二串[0..j]
的LCS,故有两种可能,i
和j
指向的字符一致,则dp[i][j]=1+dp[i-1][j-1]
,否则有两种前一个状态转移到当前状态,取最大者,即dp[i][j]=max(dp[i-1][j], dp[i][j-1])
。遍历二维数组时两指针均是[1, len(text)]
闭区间,指针表示字符之间的空隙,dp[0][j]=dp[i][0]=0
,表示空字符串没有LCS。最后返回右下角。
Complexity
Time complexity:
Space complexity:
Code
Last updated
Was this helpful?