LeetCode | Edit Distance
来源:互联网 发布:linux删除指定文件函数 编辑:程序博客网 时间:2024/06/07 03:18
题目:
Given two words word1 and word2, find the minimum number of steps required to convert word1 to word2. (each operation is counted as 1 step.)
You have the following 3 operations permitted on a word:
a) Insert a character
b) Delete a character
c) Replace a character
思路:
利用动态规划的思路。dp[i][j]表示word1的前i个字母与word2的前j个字母的编辑距离。我们可以发现如下规律:
1)若word1[i+1]==word2[j+1] dp[i+1][j+1] = dp[i][j];否则,dp[i+1][j+1] = dp[i][j] + 1。(利用替换原则)
2)dp[i+1][j+1]还可以取dp[i][j+1]与dp[i+1][j]中的较小值。(利用删除添加原则)
实际dp[i+1][j+1]应当取上述两种情况的较小值。
代码:
class Solution {public: int minDistance(string word1, string word2) { int ** dp = new int*[word1.size() + 1]; for(int i = 0; i < word1.size() + 1; i++){ dp[i] = new int[word2.size() + 1]; } for(int i = 0; i < word1.size() + 1; i++){ dp[i][0] = i; } for(int i = 1; i < word2.size() + 1; i++){ dp[0][i] = i; } for(int i = 0; i < word1.size(); i++){ for(int j = 0; j < word2.size(); j++){ if(word1[i] == word2[j]){ dp[i + 1][j + 1] = dp[i][j]; } else{ dp[i + 1][j + 1] = dp[i][j] + 1; if(dp[i][j + 1] + 1 < dp[i + 1][j + 1]){ dp[i + 1][j + 1] = dp[i][j + 1] + 1; } if(dp[i + 1][j] + 1 < dp[i + 1][j + 1]){ dp[i + 1][j + 1] = dp[i + 1][j] + 1; } } } } return dp[word1.size()][word2.size()]; }};
0 0
- LeetCode: Edit Distance
- LeetCode Edit Distance
- LeetCode: Edit Distance
- [Leetcode] Edit Distance
- leetcode 19: Edit Distance
- [LeetCode] Edit Distance
- [Leetcode] Edit Distance
- LeetCode Edit Distance
- [LeetCode] Edit Distance
- [LeetCode]Edit Distance
- Leetcode: Edit Distance
- [leetcode]Edit Distance
- LeetCode-Edit Distance
- [leetcode] Edit Distance
- LeetCode - Edit Distance
- leetcode之Edit Distance
- leetcode edit distance
- 【leetcode】Edit Distance
- 将桌面access97表转成西部数码MyAdminPHP管理的MySQL
- POJ 3278
- 面向过程的编程思想
- 黑马程序员_java学习体会
- Activity Affinity and task
- LeetCode | Edit Distance
- ubuntu nfs服务器
- S5PV210 之Sate210-F 开发板配套七寸LCD 调试成功,解决了显示上下左右相反的问题
- 电脑最大支持多少内存是指什么意义?
- Small-OS智能卡操作系统的设计准则
- 基于visual Studio2013解决面试题之0402合并升序链表并去重
- Hadoop实战-初级部分 之 Hadoop 分布式文件系统2
- Struts2的配置
- 软件工程实验报告 一