leetCode 72. Edit Distance
来源:互联网 发布:剑三新手捏脸数据 编辑:程序博客网 时间:2024/05/05 05:04
问题
https://leetcode.com/problems/edit-distance/
解法
考虑从单词后面向前修改word1, 设置状态f(i, j) 表示将word1 【0~i】修改为word2 【0~j】所需要的次数。
有三种对应的修改方法, 状态转移方程为
f(i, j) = f(i-1, j-1) +1 //如果word1[i] != word2[j] 修改
f(i, j) = f(i-1, j-1) // 如果word1[i] == word2[j] 直接匹配
f(i, j) = f(i-1, j) +1 // 删除word1[i]
f(i, j) = f(i, j-1) +1 // 增加word2[j];
f(i, j) 取上面三种情况的最小值。
可以从前向后推导出所有情况。
空间复杂度O(2*m) 时间复杂度O(n*m)
class Solution {public: int minDistance(string word1, string word2) { // covert word1 to word2 equal to convert word2 to word1 const char* w1 = word1.c_str(); const char* w2 = word2.c_str(); int m = word1.size(), n = word2.size(); if (word1.size() > word2.size()) { swap(m, n); swap(w1, w2); } vector<int> dpRow(m+1, 0); vector<vector<int>> dp(2, dpRow); int read = 0; for (int i=0; i<=m; ++i) dp[read][i] = i; for (int i=1; i<=n; ++i) { dp[!read][0] = dp[read][0]+1; for (int j=1; j<=m; ++j) dp[!read][j] = min(dp[read][j-1] + (w1[j-1] == w2[i-1] ? 0:1), min(dp[read][j]+1, dp[!read][j-1]+1)); read = !read; } return dp[read][m]; }};
0 0
- LeetCode 72. Edit Distance
- [LeetCode]72.Edit Distance
- LeetCode --- 72. Edit Distance
- [Leetcode] 72. Edit Distance
- [leetcode] 72.Edit Distance
- [leetcode] 72.Edit Distance
- Leetcode 72. Edit Distance
- LeetCode 72. Edit Distance
- leetcode 72. Edit Distance
- LeetCode 72. Edit Distance
- Leetcode 72. Edit Distance
- Leetcode:72. Edit Distance
- 【LeetCode】72. Edit Distance
- leetCode 72. Edit Distance
- [leetcode] 72. Edit Distance
- [LeetCode] 72. Edit Distance
- leetcode 72. Edit Distance
- leetcode 72. Edit Distance
- 如何安装最新版的Google play服务
- codevs 2287 火车站
- Android Studio 下的 GitHub 配置
- C++二级笔记
- PPT文档实用美化技巧
- leetCode 72. Edit Distance
- 图的邻接矩阵实现
- Activity lifecycle:step three(生命周期方法详解)
- PyCharm 开发Django ,错误汇总
- Android官方开发文档Training系列课程中文版:连接无线设备之通过WIFI创建P2P连接
- Error retrieving parent for item: No resource found that matches the given name 'Theme.AppCompat.Lig
- 基于HTTP 协议认证介绍与实现
- Error configuring application listener of class org.springframework.web.context.ContextLoaderListene
- jQuery和DOM对象转化