编辑距离
来源:互联网 发布:js手风琴效果入门思路 编辑:程序博客网 时间:2024/06/10 17:07
给出两个单词word1和word2,计算出将word1 转换为word2的最少操作次数。
你总共三种操作方法:
- 插入一个字符
- 删除一个字符
- 替换一个字符
样例
给出 work1="mart" 和 work2="karma"
class Solution {public: /* * @param word1: A string * @param word2: A string * @return: The minimum number of steps. */ int minDistance(string &word1, string &word2) { // write your code here int m = word1.size(); int n = word2.size(); if (m == 0) { return n; } else if (n == 0) { return m; } vector<vector<int>> dp(m + 1, vector<int>(n + 1, 0)); dp[0][0] = 0; for (int i = 1; i <= m; i++) { dp[i][0] = i; } for (int j = 1; j <= n; j++) { dp[0][j] = j; } for (int i = 1; i <= m; i++) { for (int j = 1; j <= n; j++) { if (word1[i - 1] == word2[j - 1]) { dp[i][j] = dp[i - 1][j - 1]; } else { dp[i][j] = min(dp[i - 1][j], dp[i][j - 1]) + 1; dp[i][j] = min(dp[i - 1][j - 1] + 1, dp[i][j]); } } } return dp[m][n]; }};
阅读全文