字符串-leetcode 72 Edit Distance

原題鏈接: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];
    }
};


發佈了61 篇原創文章 · 獲贊 1 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章