- 題目:
給定兩個字word1和word2,找到將word1轉換為word2所需的最小步驟數。 (每個操作計為1步)。 您對單詞允許以下3種操作: a)插入字元 b)刪除字元 c)替換字元
- 思路:
dp[i][j]指把word1[0..i - 1]轉換為word2[0..j - 1] 的最小運算元。
邊界條件:
dp[i][0] = i; 從長度為 i 的字串轉為空串 要刪除 i 次
dp[0][j] = j. 從空串轉為長度為 j 的字串 要新增 j 次一般情況:
如果word[i - 1] == word2[j - 1],則dp[i][j] = dp[i - 1][j - 1],因為不需要進行操作,即運算元為0.
如果word[i - 1] != word2[j - 1],則需考慮三種情況,取最小值:
Replace word1[i - 1] by word2[j - 1]: (dp[i][j] = dp[i - 1][j - 1] + 1 (for replacement));
Delete word1[i - 1]: (dp[i][j] = dp[i - 1][j] + 1 (for deletion));
Insert word2[j - 1] to word1[0..i - 1]: (dp[i][j] = dp[i][j - 1] + 1 (for insertion)). - 程式碼
class Solution { public: int minDistance(string word1, string word2) { int row = word1.size(); int col = word2.size(); vector<vector<int> >dp(row+1, vector<int>(col+1, 0)); for (int i=1; i<=row; i++) dp[i][0] = i;//從長度為i的字串到空串需要變換i次 for (int j=1; j<=col; j++) dp[0][j] = j;//從長度為kong的字串到長度為j的字串需要變換j次 for (int i=1; i<=row; i++){ for (int j=1; j<=col; j++){ if (word1[i-1] == word2[j-1]) dp[i][j] = dp[i-1][j-1]; else dp[i][j] = min(min(dp[i-1][j-1]+1,dp[i-1][j] +1), dp[i][j-1]+1 ); } } return dp[row][col]; } };
(字串動態規劃)一個字串變成另一個字串的步驟數
相關文章
- 動態規劃題:把一個字串變為迴文串動態規劃字串
- 判斷某一個字串是否存在另一個字串中字串
- 動態規劃——字串分割(Word Break)動態規劃字串
- 3297. 統計重新排列後包含另一個字串的子字串數目 I字串
- 3298. 統計重新排列後包含另一個字串的子字串數目 II字串
- SDS:一個簡易動態字串庫字串
- 怎樣衡量兩個字串的相似度(編輯距離動態規劃求解)字串動態規劃
- java查詢字串裡與指定字串相同的個數Java字串
- js判斷一個變數是否為字串型別JS變數字串型別
- 關於SAP ABAP字元變數和字串變數字元個數的一個知識點,和一個血案字元變數字串
- C++/C:數字轉成字串, 字串轉成數字C++字串
- 【動態規劃】字串最小編輯距離Java實現動態規劃字串Java
- MySQL 查詢字串的個數MySql字串
- [LeetCode] Is Subsequence 判斷一個字串是否為另一個的子序列LeetCode字串
- Java演算法面試題(003) 如何檢查一個字串是另外一個字串的旋轉字串Java演算法面試題字串
- 統計字串字元個數字串字元
- var_export-輸出或返回一個變數的字串表示Export變數字串
- javascript檢測一個變數是否為數字或者數字字串JavaScript變數字串
- 【C語言】編寫一個函式,將一個數字字串轉換成該字串對應的數字(包括正整數、負整數)。C語言函式字串
- Redis動態字串Redis字串
- iOS 擷取字串中兩個指定字串中間的字串iOS字串
- 【劍指offer】刪除在另一個字串中出現的字元字串字元
- 最長公共子序列&迴文字串 nyoj動態規劃字串動態規劃
- 規定字串由字母、數字、下劃線和點號組成字串
- 一個字串比較的題字串
- js如何判斷一個變數是數字還是數字字串JS變數字串
- Python中如何將字串變成數字?Python字串
- 統計字串中數字個數,並將數字字串形式輸出字串
- Octave 數字轉字元,連線兩個字串,以及如何將字串轉換為變數名稱字元字串變數
- 獲取一個字串中出現最多的字元和他的個數字串字元
- Golang字串解析成數字Golang字串
- shell 擷取變數的字串變數字串
- 字串的一個操作(替換類似陣列字串中的項)字串陣列
- 建立一個字串分割的函式字串函式
- “最長公共字串子序列”問題的動態規劃法演算法字串動態規劃演算法
- 替換空格 將一個字串中的空格替換成“ ”字串
- 比較字串和數字串字串
- . 【JAVA】給定任意 字串"yekmaakkccekymbvb",求出字串中有多少種字元,以及每個字元的個數?Java字串字元