编辑距离
给出两个单词word1和word2,计算出将word1 转换为word2的最少操作次数。
你总共三种操作方法:
- 插入一个字符
- 删除一个字符
- 替换一个字符
您在真实的面试中是否遇到过这个题?
Yes
样例
标签
Expand
给出 work1="mart" 和 work2="karma"
返回 3
相关题目 Expand
Timer
Expand
解题思路:
动态规划:dp[ i ][ j ] 表示从第1个字符串到i变换到第2个字符串到j需要的修改次数
public class Solution {
/**
* @param word1 & word2: Two string.
* @return: The minimum number of steps.
*/
public int minDistance(String word1, String word2) {
// write your code here
int len1 = word1.length();
int len2 = word2.length();
if(word1.equals(word2)) return 0;
int dp[][] = new int[len1+1][len2+1];
for(int i=0;i<=len2;i++){
dp[0][i] = i;
}
for(int j=0;j<=len1;j++){
dp[j][0] = j;
}
for(int i=1;i<=len1;i++){
for(int j=1;j<=len2;j++){
if(word1.substring(i-1,i).equals(word2.substring(j-1,j))){
dp[i][j] = Math.min(dp[i-1][j-1], Math.min(dp[i-1][j]+1, dp[i][j-1]+1));
}else{
dp[i][j] = Math.min(dp[i-1][j-1]+1, Math.min(dp[i-1][j]+1, dp[i][j-1]+1));
}
}
}
return dp[len1][len2];
}
}