0
点赞
收藏
分享

微信扫一扫

力扣1143 最长公共子序列

左手梦圆 2022-03-30 阅读 73

 思路:因为dp[i][j]需要参照dp[i-1][j]和dp[i][j-1],所以需要多设置一行一列作为初始值。没有给i=0和j=0的情况设置初始值是因为都为0,一个长度为0的字符串和任意长度字符串的公共子序列长度一定为0.

public int longestCommonSubsequence(String text1, String text2){
        int len1=text1.length();
        int len2=text2.length();
        int[][] dp=new int[len1+1][len2+1];
        for(int i=1;i<=len1;i++){
            for(int j=1;j<=len2;j++){
                if(text1.charAt(i-1)==text2.charAt(i-1)){
                    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[len1][len2];
    }
举报

相关推荐

0 条评论