亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

golang刷leetcode動態規劃之如何編輯距離

發布時間:2021-12-16 09:25:57 來源:億速云 閱讀:199 作者:小新 欄目:大數據

這篇文章主要介紹golang刷leetcode動態規劃之如何編輯距離,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

給定兩個單詞 word1 和 word2,計算出將 word1 轉換成 word2 所使用的最少操作數 。

你可以對一個單詞進行如下三種操作:

插入一個字符

刪除一個字符

替換一個字符

示例 1:

輸入: word1 = "horse", word2 = "ros"輸出: 3解釋: horse -> rorse (將 'h' 替換為 'r')rorse -> rose (刪除 'r')rose -> ros (刪除 'e')

示例 2:

輸入: word1 = "intention", word2 = "execution"輸出: 5解釋: intention -> inention (刪除 't')inention -> enention (將 'i' 替換為 'e')enention -> exention (將 'n' 替換為 'x')exention -> exection (將 'n' 替換為 'c')exection -> execution (插入 'u')

解題思路

編輯距離又稱levenshtein距離,用來衡量兩個字符串的相似度,假設倆字符串分別為word1和word2,用m[i][j]存word1[0:i],word2[0:j](左閉右開)的編輯距離,對于i,和j位置編輯距離m[i+1][j+1];

1,如果word1[i]==word2[j],則編輯距離是

A,m[i][j],word1[0:i],word2[0:j](左閉右開)的編輯距離

B,m[i][j+1]+1,word1[0:i],word2[0:j+1](左閉右開)的編輯距離

C,m[i+1][j]+1,word1[0:i+1],word2[0:j](左閉右開)的編輯距離

這3種情況下最小者

2,如果word1[i]!=word2[j],則編輯距離是

上述3個分支中,A替換為m[i][j]+1

3,由于m[i+1][j+1]用到了m[i][j+1],m[i+1][j],m[i][j],所以采用遞增循環。

4,初始條件,為了便于初始化,我們這里有個優化技巧:在word1和word2之前加一個空格,則:

A,m[0][0]=0

B,m[i][0]=i

C,m[0][j]=j

func minDistance(word1 string, word2 string) int {    if word1==""{        return len(word2)    }    if word2==""{        return len(word1)    }    m:=make([][]int,len(word1)+1)    for i:=0;i<len(word1)+1;i++{        m[i]=make([]int,len(word2)+1)    }     for i:=1;i<len(word1)+1;i++{     m[i][0]=i     }      for j:=1;j<len(word2)+1;j++{      m[0][j]=j      }    for i:=1;i<len(word1)+1;i++{        for j:=1;j<len(word2)+1;j++{            diff:=0            if word1[i-1]!=word2[j-1]{                diff=1            }            m[i][j]=min3(m[i-1][j]+1,m[i][j-1]+1,m[i-1][j-1]+diff)        }    }    return m[len(word1)][len(word2)]}
func min3(a,b,c int)int{    if a<=b && a<=c{        return a    }
   if b<=a&&b<=c{        return b    }    return c}

以上是“golang刷leetcode動態規劃之如何編輯距離”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

白银市| 西丰县| 洛南县| 得荣县| 石狮市| 朝阳区| 扎囊县| 嘉祥县| 保靖县| 龙里县| 民权县| 白银市| 乐陵市| 洛扎县| 玉田县| 嘉荫县| 罗城| 康保县| 彭泽县| 许昌市| 黄平县| 柞水县| 尖扎县| 崇明县| 新化县| 屏南县| 济阳县| 黎城县| 彰化县| 沙洋县| 大名县| 本溪| 社旗县| 马边| 永川市| 启东市| 泽普县| 金寨县| 平安县| 抚宁县| 兴山县|