72. Edit Distance
来源:互联网 发布:万网域名转出 编辑:程序博客网 时间:2024/04/28 02:28
/*dp[i][j] 代表将word1[0~i-1]转化成word2[0~j-1]所需的最小步数考虑边界的情况 dp[i][0]=i dp[0][j]=j;除了边界情况以外i>=1,i<=word1.size() j>=1 j<word2.size()if word1[i-1]=word2[j-1] 则dp[i][j]=dp[i-1][j-1]else 使用replace方法dp[i][j]=dp[i-1][j-1]+1(先把word1[0~i-2]转化成word2[0~j-2] 再把word1[i-1]replace成word2[j-1]) 使用deletion的方式 dp[i][j]=1+dp[i-1][j];(先把word[i-1]delete 然后再把word1[0~i-2]转化成word2[0~j-1]) 使用insert的方式 dp[i][j]=dp[i][j-1]+1;(先把word1[0~i-1]转化成word2[0~j-2]再insert word2[j-1]) 选择以上三种方式中最少步数的给dp[i][j]赋值*/class Solution {public: int minDistance(string word1, string word2) { int m=word1.size(); int n=word2.size(); vector<vector<int>> dp(m+1,vector<int>(n+1,0)); for(int i=0;i<=m;i++) dp[i][0]=i; for(int j=0;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-1]+1,min(1+dp[i-1][j],dp[i][j-1]+1)); } } return dp[m][n]; }};
1 0
- LeetCode 72. Edit Distance
- [LeetCode]72.Edit Distance
- LeetCode --- 72. Edit Distance
- [Leetcode] 72. Edit Distance
- [leetcode] 72.Edit Distance
- 72. Edit Distance
- [leetcode] 72.Edit Distance
- 72. Edit Distance
- Leetcode 72. Edit Distance
- 72. Edit Distance
- LeetCode 72. Edit Distance
- leetcode 72. Edit Distance
- LeetCode 72. Edit Distance
- Leetcode 72. Edit Distance
- 72. Edit Distance
- Leetcode:72. Edit Distance
- 【LeetCode】72. Edit Distance
- leetCode 72. Edit Distance
- Linux中的信号简介
- Codeforces Round #301 (Div. 2) -- D. Bad Luck Island (概率DP)
- cocos2d, Box2D
- android-----我眼中的Volley
- 最长递增子序列问题
- 72. Edit Distance
- 数据库的读写分离
- springMVC如何接收和发送json数据对象
- mysql与oracle 表字段定义比较
- dfs求连通块(围棋 poj)
- .htaccess文件·
- log4j中log.isDebugEnabled(), log.isInfoEnabled()和log.isTraceEnabled()作用
- MUI布局简介
- 面试的65个回答技巧-适用于BAT公司