LeetCode Edit Distance
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
1 public class Solution { 2 public int minDistance(String word1, String word2) { 3 if (word1.equals(word2)) { 4 return 0; 5 } 6 if (word1.length()==0) { 7 return word2.length(); 8 } 9 if (word2.length()==0) { 10 return word1.length(); 11 } 12 13 int[][] distance=new int[word1.length()+1][word2.length()+1]; 14 for (int i = 0; i <= word1.length(); i++) { 15 distance[i][0]=i; 16 } 17 for (int i = 0; i <= word2.length(); i++) { 18 distance[0][i]=i; 19 } 20 21 for (int i = 1; i <= word1.length(); i++) { 22 for (int j = 1; j <= word2.length(); j++) { 23 if (word1.charAt(i-1)==word2.charAt(j-1)) { 24 distance[i][j]=distance[i-1][j-1]; 25 }else { 26 distance[i][j]=Math.min(Math.min(distance[i-1][j], distance[i][j-1]), distance[i-1][j-1])+1; 27 } 28 } 29 30 } 31 return distance[word1.length()][word2.length()]; 32 } 33 }