72 編輯距離

2021-09-29 20:48:26 字數 1310 閱讀 2986

題目:

給定兩個單詞 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')

思路:從上面三個問題來看,word1[0..i] 變換成 word2[0..j] 主要有三種手段,用哪個消耗少,就用哪個。

class solution(object):

def mindistance(self, word1, word2):

""":type word1: str

:type word2: str

:rtype: int

"""n1,n2=len(word1),len(word2)

tmp1=[0]*(n2+1)

tmp2=[0]*(n2+1)

#print(tmp1)

tmp2[0]=0

for i in range(1,n2+1):

tmp2[i]=i

#print(tmp2)

for j in range(1,n1+1):

tmp1[0]=j

#print(tmp1)

for k in range(1,n2+1):

if word1[j-1]==word2[k-1]:

tmp1[k]=tmp2[k-1]

else:

tmp1[k]=min(tmp2[k],tmp1[k-1],tmp2[k-1])+1

tmp1,tmp2=tmp2,tmp1

return tmp2[n2]

72 編輯距離

給定兩個單詞 word1 和 word2,計算出將 word1 轉換成 word2 所使用的最少運算元 你可以對乙個單詞進行如下三種操作 插入乙個字元 刪除乙個字元 替換乙個字元 示例 1 輸入 word1 horse word2 ros 輸出 3解釋 horse rorse 將 h 替換為 r r...

72 編輯距離

給定兩個單詞 word1 和 word2,計算出將 word1 轉換成 word2 所使用的最少運算元 你可以對乙個單詞進行如下三種操作 插入乙個字元 刪除乙個字元 替換乙個字元 示例 1 輸入 word1 horse word2 ros 輸出 3 解釋 horse rorse 將 h 替換為 r ...

72 編輯距離

編輯距離 給定兩個單詞 word1 和 word2,計算出將 word1 轉換成 word2 所使用的最少運算元 你可以對乙個單詞進行如下三種操作 插入乙個字元 刪除乙個字元 替換乙個字元 示例 1 輸入 word1 horse word2 ros 輸出 3 解釋 horse rorse 將 h 替...