📪

最长公共子序列

int longestCommonSubsequence(string text1, string text2) {
    int m = text1.size();
    int n = text2.size();
    // dp[i][j], 以text1[i-1]和text2[j-1]为终点计算的最长公共子序列
    // 设置 m+1 和 n+1 长度,可以避免需要对等于0 的情况进行特殊处理的问题
    vector<vector<int>> dp(m+1, vector<int>(n+1, 0));
    // 遍历计算dp数组
    for(int i = 1; i <= m; i++) {
        for (int j = 1; j <= n; j++) {
            if (text1[i-1] == text2[j-1]) {
                dp[i][j] = dp[i-1][j-1] + 1;
            } else {
                dp[i][j] = max(dp[i-1][j], dp[i][j-1]);
            }
        }
    }
    return dp[m][n];
}
 
你觉得这篇文章怎么样?
YYDS
比心
加油
菜狗
views

Loading Comments...