java实现求最长公共子序列
时间: 2023-06-08 14:06:42 浏览: 109
好的,我可以为您提供一个基于Java实现的求最长公共子序列的示例代码:
```
public class LongestCommonSubsequence {
public static int longestCommonSubsequence(String str1, String str2) {
if (str1 == null || str2 == null || str1.length() == 0 || str2.length() == 0) {
return 0;
}
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 - 1][j], dp[i][j - 1]);
}
}
}
return dp[str1.length()][str2.length()];
}
public static void main(String[] args) {
String str1 = "abcdefg";
String str2 = "aceg";
int result = longestCommonSubsequence(str1, str2);
System.out.println(result);
}
}
```
这个示例代码使用动态规划的方法,时间复杂度为O(mn),其中m和n分别是两个字符串的长度。如果两个字符串的长度较大,还可以使用优化算法进一步提高效率。
阅读全文