计算字符串的编辑距离
实现代码:
public static void main(String[] args) {Scanner scanner = new Scanner(System.in);String s = scanner.nextLine();String t = scanner.nextLine();int result = minDistance(s, t);System.out.println(result);scanner.close();}public static int minDistance(String word1, String word2) {int m = word1.length();int n = word2.length();// 创建DP表int[][] dp = new int[m + 1][n + 1];// 初始化边界条件for (int i = 0; i <= m; i++) {dp[i][0] = i; // 从word1的前i个字符变成空串需要i次删除操作}for (int j = 0; j <= n; j++) {dp[0][j] = j; // 从空串变成word2的前j个字符需要j次插入操作}// 填充DP表for (int i = 1; i <= m; i++) {for (int j = 1; j <= n; j++) {if (word1.charAt(i - 1) == word2.charAt(j - 1)) {// 字符相同,不需要操作dp[i][j] = dp[i - 1][j - 1];} else {// 字符不同,取三种操作的最小值 + 1dp[i][j] = Math.min(Math.min(dp[i - 1][j], dp[i][j - 1]), dp[i - 1][j - 1]) + 1;}}}return dp[m][n];}