LeetCode 72. Edit Distance
来源:互联网 发布:excel2007软件 编辑:程序博客网 时间:2024/06/06 08:53
https://leetcode.com/problems/edit-distance/description/
动态规划:
一、定义状态
设定二维数组 dp[i][j] 代表字符串 s1 的前 i 个转化成 s2 的前 j 个所需要操作。
二、寻找状态转移方程
分析:dp[i][j] 可由 dp[i-1][j](增加), dp[i][j-1](删除), dp[i-1][j-1](要看s1[i-1]跟s2[j-1]是否相等) 三种状态转化而来
转移方程:dp[i][j] = min( min(dp[i-1][j], dp[i][j-1])+1, dp[i-1][j-1]+ s1[i-1]==s2[j-1]?0:1 )
三、处理初始值
两种边界值:i==0, dp[0][j] = j(增加); j==0, dp[i][0] = i(删除)
class Solution {public: int minDistance(string word1, string word2) { int m = word1.length(); int n = word2.length(); cout<<m<<" "<<n<<endl; vector<vector<int> >dp(m+1, vector<int>(n+1)); for(int i=0; i<=m; i++){ for(int j=0; j<=n; j++){ if(i==0){ dp[i][j] = j; }else if(j==0){ dp[i][j] = i; }else{ dp[i][j] = min( min(dp[i-1][j], dp[i][j-1])+1, dp[i-1][j-1]+ (word1[i-1]==word2[j-1]?0:1) ); } } } int ans = dp[m][n]; cout<<ans<<endl; return ans; }};
阅读全文
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
- 几种编程题高难度常用算法总结
- 校内赛 2017.8.27 【卢卡斯定理】 【DFS+Hash】【线段树】
- 列表、表格与媒体元素
- 两位数值单词的乘法实现
- springmvc下的省市县三级联动
- LeetCode 72. Edit Distance
- minicom 使用方法
- linux 查看端口是否被占用
- C#基础-024 猜数字游戏
- 客户端缓存和服务器缓存处理
- C#基础-025 登录的逻辑
- 什么是计算机的串行 COM 端口
- IOS 中 JSON 和 XML 解析
- CCF —— CSP认证