程式設計小練習:
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...