字符串-leetcode 72 Edit Distance

来源:互联网 发布:女生都穿安全裤 知乎 编辑:程序博客网 时间:2024/06/09 21:31

原题链接:Edit Distance


分析:这是一个编辑距离的问题,在编程之美上也有这道题,做法比较简单的可以想到递归的思路,然而会发现递归的思路复杂度太高,是指数级,转而也比较容易想到动态规划的思想优化复杂度,具体代码如下:

class Solution {public:    int minDistance(string word1, string word2) {        /*            思路:这种题一般容易想到递归,但是递归这个时间复杂度太高了,转而之也非常容易想到使用动态规划的思想。            这里采用的是至底向上的动态规划思想,将矩阵依次求出即可得出最后的结果            Time Complexity:O(m*n)            Space Complexity:O(m*n)        */        int sz=word1.size();        int tz=word2.size();        int edit[sz+1][tz+1];        int i,j=0;        for(j=0;j<=tz;j++)edit[0][j]=j;        for(i=0;i<=sz;i++)edit[i][0]=i;        for(i=1;i<=sz;i++){            for(j=1;j<=tz;j++){                if(word1[i-1]==word2[j-1])edit[i][j]=edit[i-1][j-1];                else edit[i][j]=min(min(edit[i-1][j]+1,edit[i][j-1]+1),edit[i-1][j-1]+1);            }        }        return edit[sz][tz];    }};


原创粉丝点击