Skip to content

Latest commit

 

History

History
52 lines (37 loc) · 1.52 KB

1143 Longest Common Subsequence.md

File metadata and controls

52 lines (37 loc) · 1.52 KB

Given two strings text1 and text2, return the length of their longest common subsequence.

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. (eg, "ace" is a subsequence of "abcde" while "aec" is not). A common subsequence of two strings is a subsequence that is common to both strings.

If there is no common subsequence, return 0.

Examples:

Input: text1 = "abcde", text2 = "ace" 
Output: 3  
Explanation: The longest common subsequence is "ace" and its length is 3.

Input: text1 = "abc", text2 = "abc"
Output: 3
Explanation: The longest common subsequence is "abc" and its length is 3.

Input: text1 = "abc", text2 = "def"
Output: 0
Explanation: There is no such common subsequence, so the result is 0.

Solution

c++

class Solution {
public:
    int longestCommonSubsequence(string text1, string text2) {
        int len1 = text1.size(), len2 = text2.size();
        int dp[len1+1][len2+1];
        memset(dp, 0, sizeof(dp));

        for (int i = 1; i <= len1; i++)
            for (int j = 1; j <= len2; j++){
                if (text1[i-1] == text2[j-1])
                    dp[i][j] = dp[i-1][j-1] + 1;
                else
                    dp[i][j] = max(dp[i][j-1], dp[i-1][j]);
            }

        return dp[len1][len2];
    }
};

执行用时:8 ms, 在所有 C++ 提交中击败了98.90%的用户

内存消耗:10.4 MB, 在所有 C++ 提交中击败了88.87%的用户