标签:style blog color io for ar div log
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
用m*n的矩阵vector中的(i,j)存储从word1中(0...i)到word2中(0...j)的最小变化次数
矩阵中,从上到下对应删除操作,从左到右对应插入操作,从左上到右下对应Replace操作。
class Solution { public: int minDistance(string word1, string word2) { //1->2 if(word1==word2) return 0; int len1 = word1.size(); int len2 = word2.size(); vector<int> temp(len2+1,0); vector<vector<int> > vec(len1+1,temp); for(int i=1;i<=len1;i++){ vec[i][0] = i; } for(int j=1;j<=len2;j++){ vec[0][j] = j; } for(int i=1;i<=len1;i++){ for(int j=1;j<=len2;j++){ int tem1,tem2; tem1 = min(vec[i-1][j]+1,vec[i][j-1]+1); tem2 = word1[i-1]==word2[j-1] ? vec[i-1][j-1]:vec[i-1][j-1]+1; vec[i][j] = min(tem1,tem2); }//end for }//end for return vec[len1][len2]; } };
[LeetCode] Edit Distance(很好的DP),布布扣,bubuko.com
[LeetCode] Edit Distance(很好的DP)
标签:style blog color io for ar div log
原文地址:http://www.cnblogs.com/Xylophone/p/3919112.html