程式設計小練習三 編輯距離

2021-08-20 16:20:49 字數 1897 閱讀 1524

程式設計小練習:

leecode72

72. 編輯距離

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

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

1. 插入乙個字元

2. 刪除乙個字元

3. 替換乙個字元

示例 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')

分析:可以參考:

1、c++

classsolution

else if(j == 0)

else

int temp = (dp[i-1][j-1]+cost< dp[i-1][j]+1) ? (dp[i-1][j-1]+cost):(dp[i-1][j]+1);

temp = (temp < dp[i][j-1]+1) ? temp : (dp[i][j-1]+1);

dp[i][j] = temp;

}                }}

return dp[m-1][n-1];    }}

3、python3

class solution:

defmindistance(self, word1, word2):

""":typeword1: str

:typeword2: str

:rtype: int

"""m =len(word1) + 1

n =len(word2) + 1

dp =[[0 for col in range(n)] for row in range(m)]

for iin range(0, m):

dp[i][0] = i

for jin range(0, n):

dp[0][j] = j

for iin range(m):

print(dp[i])

cost = 0

for iin range(1, m):

for j in range(1, n):

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

cost = 0

else:

cost = 1

dp[i][j] = min(dp[i - 1][j - 1] + cost, dp[i - 1][j] + 1, dp[i][j - 1] +1)

return dp[m-1][n-1]

lintcode練習 119 編輯距離

給出兩個單詞word1和word2,計算出將word1 轉換為word2的最少操作次數。你總共三種操作方法 給出 work1 mart 和 work2 karma 返回 3 當i 0時,dp 0,j j,j 0.len word2 表示word2需要刪除j位來使其與word1相同為空 同理當j 0,...

程式設計小練習

檔名稱 test.cpp 完成日期 2016年4月11日 問題描述 ip位址 在日常網路環境中,基本是都在使用b,c兩大類位址,而ade這3類位址都不打可能被使用到。include using namespace std class ip ip位址共4位元組,或者看成結構體所指4部分 unsigne...

程式設計小練習

檔名稱 test.cpp 完成日期 2016年4月11日 問題描述 設計乙個 類,要有 名 威力。在上週的遊戲角色類role基礎上擴充,為每個角色建立乙個 並在攻擊 attack 行為發生時,在其中起作用。include using namespace std class weapon weapon...