首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >动态规划两个数组dp问题系列一>最长公共子序列

动态规划两个数组dp问题系列一>最长公共子序列

作者头像
用户11305962
发布于 2025-02-02 21:46:30
发布于 2025-02-02 21:46:30
3140
举报
文章被收录于专栏:学习学习

题目:


解析: 

状态表示+状态转移方程: 


初始化+填表顺序+返回值: 


代码:

代码语言:javascript
复制
class Solution {
    public int longestCommonSubsequence(String s1, String s2) {
        int m = s1.length(), n = s2.length();
        s1 = " "+ s1; s2 = " "+ s2;

        int[][] dp = new int[m + 1][n + 1];
        for(int i = 1; i <= m; i++)
            for(int j = 1; j <= n; j++){
                if(s1.charAt(i) == s2.charAt(j)) 
                    dp[i][j] = dp[i - 1][j - 1] + 1;
                else
                    dp[i][j] = Math.max(dp[i - 1][j], dp[i][j - 1]);
            }

        return dp[m][n];
    }
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-01-30,如有侵权请联系 cloudcommunity@tencent.com 删除
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档