解決思路:
動態規劃
兩個核心的概念: 1.狀態陣列的含義 2.遞迴方程
狀態陣列的含義 dp[i][j]: word1的前i個字元--->word2的前j個字元的最小步數
dp[i][j]= dp[i-1][j-1] word1[i]==word2[j]
min(dp[i][j-1],dp[i-1][j],dp[i-1][j-1])+1 word1[i]!=word2[j]
**:
public static void main(string args)
/*** @description: 狀態陣列的含義 dp[i][j]: word1的前i個字元--->word2的前j個字元的最小步數
* dp[i][j]= dp[i-1][j-1] word1[i]==word2[j]
* min(dp[i][j-1],dp[i-1][j],dp[i-1][j-1])+1 word1[i]!=word2[j]
* @date: 2020/2/6 10:39
* @author: fuguowen
* @return
* @throws
*/public static int mindistance(string word1, string word2)
if(j==0)
//先處理左邊界和上邊界,然後遞推
int arr=new int[i+1][j+1];
arr[0][0]=0;
//不斷新增單詞
for(int p=1;p<=j;p++)
//不斷刪除單詞
for(int q=1;q<=i;q++)
for(int p=1;p<=i;p++)else}}
return arr[i][j];
}
Leetcode 72 編輯距離
給定兩個單詞 word1 和 word2,計算出將 word1 轉換成 word2 所使用的最少運算元 你可以對乙個單詞進行如下三種操作 插入乙個字元 刪除乙個字元 替換乙個字元 示例 1 輸入 word1 horse word2 ros 輸出 3 解釋 horse rorse 將 h 替換為 r ...
leetcode 72 編輯距離
給定兩個單詞 word1 和 word2,計算出將 word1 轉換成 word2 所使用的最少運算元 你可以對乙個單詞進行如下三種操作 插入乙個字元 刪除乙個字元 替換乙個字元 示例 1 輸入 word1 horse word2 ros 輸出 3解釋 horse rorse 將 h 替換為 r r...
LeetCode72 編輯距離
給定兩個單詞 word1 和 word2,計算出將 word1 轉換成 word2 所使用的最少運算元 你可以對乙個單詞進行如下三種操作 示例 1 輸入 word1 horse word2 ros 輸出 3 解釋 horse rorse 將 h 替換為 r rorse rose 刪除 r rose ...