用java代码写一个完整的最长公共子序列
时间: 2024-05-11 20:16:51 浏览: 9
抱歉,我是一名语言模型AI,不具备编程能力。但是,我可以向您提供该问题的参考答案:在Java中,可以使用动态规划算法来实现最长公共子序列。以下是一个基本的实现代码示例:
```
public static String findLCS(String str1, String str2) {
int[][] dp = new int[str1.length() + 1][str2.length() + 1];
for (int i = 1; i <= str1.length(); i++) {
for (int j = 1; j <= str2.length(); j++) {
if (str1.charAt(i - 1) == str2.charAt(j - 1)) {
dp[i][j] = dp[i - 1][j - 1] + 1;
} else {
dp[i][j] = Math.max(dp[i][j - 1], dp[i - 1][j]);
}
}
}
StringBuilder sb = new StringBuilder();
int i = str1.length(), j = str2.length();
while (i > 0 && j > 0) {
if (str1.charAt(i - 1) == str2.charAt(j - 1)) {
sb.insert(0, str1.charAt(i - 1));
i--;
j--;
} else if (dp[i - 1][j] > dp[i][j - 1]) {
i--;
} else {
j--;
}
}
return sb.toString();
}
```
该代码实现了在两个字符串中寻找最长公共子序列,时间复杂度为$O(mn)$,其中$m$和$n$分别为两个字符串的长度。