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.
Constraints
1 <= text1.length, text2.length <= 1000
text1
andtext2
consist of only lowercase English characters.
Approach
Links
Binarysearch
GeeksforGeeks
ProgramCreek
YouTube
Examples
Input: text1 = "abc", text2 = "abc"
Output: 3
Explanation: The longest common subsequence is "abc" and its length is 3.
Solutions
/**
* Time complexity :
* Space complexity :
*/
class Solution {
public int longestCommonSubsequence(String text1, String text2) {
if(text1 == null || text2 == null || text1.isEmpty() || text2.isEmpty()) {
return 0;
}
int t1Len = text1.length(), t2Len = text2.length();
int[][] dp = new int[t1Len+1][t2Len+1];
for(int i = 1; i <= t1Len; i++) {
for(int j = 1; j <= t2Len; j++) {
if(text1.charAt(i-1) == text2.charAt(j-1)) {
dp[i][j] = 1 + dp[i-1][j-1];
} else {
dp[i][j] = Math.max(dp[i-1][j], dp[i][j-1]);
}
}
}
return dp[t1Len][t2Len];
}
}
Follow up
Last updated
Was this helpful?