最长公共子串(Longest Common Substring)与最长公共子序列(Longest Common Subsequence)的区别:
子串要求在原字符串中是连续的,而子序列则只需保持相对顺序一致,并不要求连续。
最长公共子序列
- 求最长子序列长度
- 最长回文数的代码实现:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16public static int testMaxLongPlalindrome(String str) {
int length = str.length();
String[] charstr = str.split("");
int[][] dp = new int[length + 1][length + 1];
for (int i = 0; i < length; i++) {
for (int j = 0; j < length; j++) {
if(charstr[i].equals(charstr[length - j - 1])) {
dp[i + 1][j + 1] = dp[i][j] + 1;
}else {
dp[i + 1][j + 1] = Math.max(dp[i][j + 1], dp[i + 1][j]);
}
}
}
System.out.println(length - dp[length][length]);
return length - dp[length][length];
}