- 题目
华为OD机试真题-两个字符串间的最短路径问题-2023年OD统一考试(C卷) - 解决思路
二维动态规划 - Java
public class Test3 {
public static void main(String[] args) {
while(true){
Scanner sc = new Scanner(System.in);
String s1 = sc.nextLine();
String s2 = sc.nextLine();
System.out.println(cal(s1, s2));
}
}
public static int cal(String s1, String s2) {
int l1 = s1.length(), l2 = s2.length();
int[][] dp = new int[l1 + 1][l2 + 1];
for (int i = 1; i < l1 + 1; i++) {
dp[i][0] = i;
}
for (int i = 0; i < l2 + 1; i++) {
dp[0][i] = i;
}
for (int i = 1; i < l1 + 1; i++) {
for (int j = 1; j < l2 + 1; j++) {
dp[i][j] = 1 + Math.min(dp[i-1][j], dp[i][j-1]);
if(s1.charAt(i-1) == s2.charAt(j-1)){
dp[i][j] = Math.min(dp[i][j], dp[i-1][j-1] + 1);
}
}
}
return dp[l1][l2];
}
}