From 0c57a909e3aeb90bdfc4b51f203196cb00f36f71 Mon Sep 17 00:00:00 2001 From: weijiew <836678589@qq.com> Date: Tue, 23 Jun 2020 14:03:20 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E6=9C=80=E9=95=BF=E5=85=AC?= =?UTF-8?q?=E5=85=B1=E5=AD=90=E5=BA=8F=E5=88=97=20java=20=E8=A7=A3?= =?UTF-8?q?=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...61\345\255\220\345\272\217\345\210\227.md" | 28 +++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git "a/\345\212\250\346\200\201\350\247\204\345\210\222\347\263\273\345\210\227/\346\234\200\351\225\277\345\205\254\345\205\261\345\255\220\345\272\217\345\210\227.md" "b/\345\212\250\346\200\201\350\247\204\345\210\222\347\263\273\345\210\227/\346\234\200\351\225\277\345\205\254\345\205\261\345\255\220\345\272\217\345\210\227.md" index 7bb6031..86b6976 100644 --- "a/\345\212\250\346\200\201\350\247\204\345\210\222\347\263\273\345\210\227/\346\234\200\351\225\277\345\205\254\345\205\261\345\255\220\345\272\217\345\210\227.md" +++ "b/\345\212\250\346\200\201\350\247\204\345\210\222\347\263\273\345\210\227/\346\234\200\351\225\277\345\205\254\345\205\261\345\255\220\345\272\217\345\210\227.md" @@ -164,6 +164,34 @@ public: } }; ``` + +[weijiew](https://github.com/weijiew) 提供Java解法代码: + +```java +class Solution { + public int longestCommonSubsequence(String text1, String text2) { + int m = text1.length(), n = text2.length(); + // 构建 DP table 和 base case + // dp[i][j] 表示: 字符串 str1[0:i] 和字符串 str2[0:j] 的最大公共子序列 + int[][] dp = new int[m+1][n+1]; + // 进行状态转移 + for(int i = 1; i <= m; i++){ + for(int j = 1; j <= n; j++){ + if(text1.charAt(i-1) == text2.charAt(j-1)){ // 若两个字符相等,必然可以构成子问题的最优解 + // 这个字符存在于 lcs 之中 + dp[i][j] = dp[i-1][j-1] + 1; + }else{ + // 此时 text1[i] != text2[j] 则表示至少有一个不在 lcs 中(要么 text1[i] 不在,要么 text2[j]不在,或者都不在)。 + // 所以当前结果就相当于之前结果的中最大的那一个 + dp[i][j] = Math.max(dp[i-1][j],dp[i][j-1]); + } + } + } + return dp[m][n]; + } +} +``` + [上一篇:动态规划之正则表达](../动态规划系列/动态规划之正则表达.md) [下一篇:学习算法和刷题的思路指南](../算法思维系列/学习数据结构和算法的高效方法.md) -- GitLab