72. 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

---

Idea: DP

i->word1, j->word2

insert = 1 + [i][j-1];

delete = 1 + [i-1][j];

replace = 1 + [i-1][j-1];

 

public class Solution {
    public int minDistance(String word1, String word2) {
        
        int[][] arr = new int[word1.length()+1][word2.length()+1];
        
        // init
        for(int i=0;i<=word1.length();i++)
            arr[i][0]=i;
        for(int j=0;j<=word2.length();j++)
            arr[0][j]=j;
            
        
        for(int i=1;i<=word1.length();i++){
            for(int j=1;j<=word2.length();j++){
                
                if(word1.charAt(i-1)==word2.charAt(j-1)){
                    arr[i][j]=arr[i-1][j-1];
                }else{
                    int mn=Math.min(arr[i-1][j],arr[i][j-1]);
                    arr[i][j]=1+Math.min(arr[i-1][j-1],mn);
                }
            }
        }
        return arr[word1.length()][word2.length()];
        
    }
}

 

posted @ 2013-10-01 02:54  LEDYC  阅读(204)  评论(0)    收藏  举报