package org.example.test;
public class LCSTest {
public static void main(String[] args) {
System.out.println(LCS("1a1a31", "1a231"));
}
/**
* dp[i][j] 数组存放两个字符串s1[i]到s2[j]最长公共字符串。
*
* @param s1
* @param s2
* @return
*/
public static String LCS(String s1, String s2) {
// write code here
int a = s1.length();
int b = s2.length();
String[][] dp = new String[a + 1][b + 1];
for (int i = 0; i <= b; i++) {
dp[0][i] = "";
}
for (int i = 0; i <= a; i++) {
dp[i][0] = "";
}
for (int i = 1; i <= a; i++) {
char c1 = s1.charAt(i - 1);
for (int j = 1; j <= b; j++) {
char c2 = s2.charAt(j - 1);
if (c1 == c2) {
dp[i][j] = dp[i - 1][j - 1] + c2;
} else {
if (dp[i - 1][j].length() > dp[i][j - 1].length()) {
dp[i][j] = dp[i - 1][j];
} else {
dp[i][j] = dp[i][j - 1];
}
}
}
}
return dp[a][b].equals("") ? "-1" : dp[a][b];
}
}