最小编辑距离,动态规划经典题。
Given two words word1 and word2, find the minimum number of steps required to convert word1 to word2. (each operation is counted as 1 step.)
You have the following 3 operations permitted on a word:
a) Insert a character
b) Delete a character
c) Replace a character
参考:https://segmentfault.com/a/1190000003741294
import java.util.*; public class Solution { public int minDistance(String word1, String word2) { if (word1 == null && word2 == null) return 0; int len1 = word1.length(); int len2 = word2.length(); if (len1 == 0) return len2; if (len2 == 0) return len1; int[][] dp = new int[len1+1][len2+1]; for (int i=0; i<=len1; i++) dp[i][0] = i; for (int j=0; j<=len2; j++) dp[0][j] = j; for (int i=1; i<=len1; i++) { for (int j=1; j<=len2; j++) { int insert = dp[i][j-1] + 1; int delete = dp[i-1][j] + 1; int replace = dp[i-1][j-1] + (word1.charAt(i-1)==word2.charAt(j-1)?0:1); dp[i][j] = Math.min(insert, Math.min(delete, replace)); } } return dp[len1][len2]; } }