Edit Distance

来源:互联网 发布:如何建立网络连接 编辑:程序博客网 时间:2024/04/17 07:50

Edit Distance

 Total Accepted: 4550 Total Submissions: 18687My Submissions

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

核心思想:动态规划,转移方程式:

if (word1[i-1] != word2[j-1]) {       step[i][j] = min(min(step[i-1][j],step[i-1][j-1]),step[i][j-1])+1;       continue;} else{      step[i][j]=step[i-1][j-1];
}

class Solution {public:    int minDistance(string word1, string word2) {        static int step[5000][5000];        int len1 = word1.length();        int len2 = word2.length();                for (int i=0; i<=len2; ++i)             step[0][i] = i;        for (int i=0; i<=len1; ++i)            step[i][0] = i;        for (int i=1; i<=len1; ++i) {            for (int j=1; j<=len2; ++j){                if (word1[i-1] != word2[j-1]) {                    step[i][j] = min(min(step[i-1][j],step[i-1][j-1]),step[i][j-1])+1;                    continue;                }                 step[i][j]=step[i-1][j-1];            }        }        return step[len1][len2];    }};


0 0
原创粉丝点击