給定兩個字串s1, s2
,找到使兩個字串相等所需刪除字元的ascii值的最小和。
示例 1:
輸入: s1 = "sea", s2 = "eat"示例 2:輸出: 231
解釋: 在 "sea" 中刪除 "s" 並將 "s" 的值(115)加入總和。
在 "eat" 中刪除 "t" 並將 116 加入總和。
結束時,兩個字串相等,115 + 116 = 231 就是符合條件的最小和。
輸入: s1 = "delete", s2 = "leet"注意:輸出: 403
解釋: 在 "delete" 中刪除 "dee" 字串變成 "let",
將 100[d]+101[e]+101[e] 加入總和。在 "leet" 中刪除 "e" 將 101[e] 加入總和。
結束時,兩個字串都等於 "let",結果即為 100+101+101+101 = 403 。
如果改為將兩個字串轉換為 "lee" 或 "eet",我們會得到 433 或 417 的結果,比答案更大。
思想:典型的求字串最優解問題,一般都是使用動態規劃法。dp[i][j]表示字串1前i個字元,字串2前j個字元達到完全一致需要刪除的最少ascii和。狀態轉移方程:
如果s1.chara(i - 1) == s2.charat(j - 1), dp[i][j] = dp[i - 1][j - 1];
否則dp[i][j] = min(dp[i][j - 1] + s2.charat(j - 1), dp[i - 1][j] +s1.chara(i - 1);//dp[i][j - 1] + s2.charat(j - 1)代表刪除字串2中的第j個字元去匹配字串1的前i個字元,dp[i - 1][j] +s1.chara(i - 1) 代表刪除字串1的第i個字元去匹配字串2的前j個字元
**如下:
publicintminimumdeletesum(string s1, string s2)
else}}
return
dp[l1][l2];
}
712 兩個字串的最小ASCII刪除和
給定兩個字串s1,s2,找到使兩個字串相等所需刪除字元的ascii值的最小和。示例 1 輸入 s1 sea s2 eat 輸出 231 解釋 在 sea 中刪除 s 並將 s 的值 115 加入總和。在 eat 中刪除 t 並將 116 加入總和。結束時,兩個字串相等,115 116 231 就是符...
712 兩個字串的最小ASCII刪除和
解題思路主要 於leetcode官方與 程式設計師面試寶典 給定兩個字串s1,s2,找到使兩個字串相等所需刪除字元的ascii值的最小和。示例 1 輸入 s1 sea s2 eat 輸出 231 解釋 在 sea 中刪除 s 並將 s 的值 115 加入總和。在 eat 中刪除 t 並將 116 加...
連線兩個字串
include include void main char lianjie char a 30 char b 30 原型 extern char strcat char dest,char src 用法 include 功能 把src所指字串新增到dest結尾處 覆蓋dest結尾處的 0 並新增 ...