[leetcode]Edit Distance
来源:互联网 发布:java系统设计文档 编辑:程序博客网 时间:2024/05/21 08:01
编辑距离问题,典型的动态规划解决的问题。
pMatrix[i][j]表示word1[1..i]与word2[1..j]的编辑距离。有如下递推关系:
pMatrix[i][j]=min{ pMatrix[i-1][j]+1,pMatrix[i][j-1]+1,pMatrix[i-1][j-1]+cost},其中cost决定于word1[i-1]与word2[j-1]是否相等,相等则为0,不等为1。初始化pMatrix[i][0]和pMatrix[0][j]。根据递推关系可得到word1和word2的编辑距离。
代码如下:
class Solution {public: int minDistance(string word1, string word2) { int max1=word1.size(); int max2=word2.size(); int **pMatrix=new int*[max1+1]; for(int i=0;i<max1+1;i++) pMatrix[i]=new int[max2+1]; for(int i=0;i<max1+1;i++){ pMatrix[i][0]=i; } for(int j=0;j<max2+1;j++){ pMatrix[0][j]=j; } for(int i=1;i<=max1;i++){ for(int j=1;j<=max2;j++){ int temp=min(pMatrix[i-1][j]+1,pMatrix[i][j-1]+1); int d; if(word1[i-1]==(word2[j-1])){ d=0; } else{ d=1; } pMatrix[i][j]=min(pMatrix[i-1][j-1]+d,temp); } } int dis=pMatrix[max1][max2]; for(int i=0;i<max1+1;i++){ delete[] pMatrix[i]; pMatrix[i]=NULL; } delete[] pMatrix; pMatrix=NULL; return dis; }};
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
- ios 配置颜色
- samba 文件和文件夹权限控制
- NOIP提高组 1999 & 2000 题解合集
- HDU解题报告——1717
- Effective C++:条款52 写了placement new也要写placement delete
- [leetcode]Edit Distance
- POJ Goldbach's Conjecture
- 当然了,两岸关系也不可能是一帆风顺的
- Linux Shell脚本应用——使用if判断结构
- ACM从弱到强的进步
- 中文分词--最少单词数
- 关于activity元素的 android.intent.action.MAIN 和 android.intent.category.LAUNCHER
- usb setup请求结构体分析
- finally语句是在try的return语句执行之后,return返回之前执行