1、题目描述
给两个字符串a和b,找到把a转换成b用的最少转换次数。转换方式有三种,插入,删除,替换。
2、思路
dynamic Programming.
dp[i][j] refers to the minimum number of steps required to convert a.substr(0,i) to b.substr(0,j).
If a[i]==b[j], dp[i+1][j+1] = dp[i][j];
else dp[i+1][j+1] = min(dp[i][j], dp[i+1][j], dp[i][j+1]) +1.
3、代码
int minDistance(string word1, string word2) {
int l1 = word1.size(),l2=word2.size();
int dp[l1+1][l2+1];
for(int i=0;i<=l1;i++)
dp[i][0]=i;
for(int i=0;i<=l2;i++)
dp[0][i]=i;
for(int i=0;i<l1;i++){
for(int j=0;j<l2;j++){
if(word1[i]==word2[j])
dp[i+1][j+1]=dp[i][j];
else{
dp[i+1][j+1]=min(dp[i+1][j],min(dp[i][j],dp[i][j+1]))+1;
}
}
}
return dp[l1][l2];
}