用java编写字符串的最长公共子序列求解问题
时间: 2023-11-26 15:06:07 浏览: 97
求字符串的最长公共子序列
可以使用动态规划来解决Java中字符串的最长公共子序列问题。
首先,定义一个二维数组dp,其中dp[i][j]表示字符串s1的前i个字符和字符串s2的前j个字符的最长公共子序列的长度。
然后,我们需要遍历两个字符串,比较每个字符是否相同,如果相同则dp[i][j] = dp[i-1][j-1] + 1,如果不相同则dp[i][j] = max(dp[i-1][j], dp[i][j-1])。
最后,dp[s1.length()][s2.length()]就是最长公共子序列的长度。
下面是Java代码的实现:
```
public static int longestCommonSubsequence(String s1, String s2) {
int n1 = s1.length(), n2 = s2.length();
int[][] dp = new int[n1+1][n2+1];
for (int i = 1; i <= n1; i++) {
for (int j = 1; j <= n2; j++) {
if (s1.charAt(i-1) == s2.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[n1][n2];
}
```
可以通过调用该方法来获取两个字符串的最长公共子序列的长度。
阅读全文