See More

package EditDistance; /** * User: Danyang * Date: 1/26/2015 * Time: 11:09 * * 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 */ public class Solution { /** * from word1 to word2 * f[i, j] the min distance from word1[0..i] tp word2[0..j] * if word1[i]==word2[j]: * f[i][j] = f[i-1][j-1] * * else: * delete: f[i, j] = f[i-1, j]+1 * insert: f[i, j] = f[i, j-1]+1 * replace f[i, j] = f[i-1, j-1]+1 * * Notice: * 1. the INITIAL condition * * @param word1 * @param word2 * @return */ public int minDistance(String word1, String word2) { int m = word1.length(); int n = word2.length(); int[][] f = new int[m+1][n+1]; for(int j=0; j