兩個字串的最小ASCII刪除和

2022-05-07 11:12:12 字數 1100 閱讀 4451

給定兩個字串s1, s2,找到使兩個字串相等所需刪除字元的ascii值的最小和。

示例 1:

輸入: s1 = "sea", s2 = "eat"

輸出: 231

解釋: 在 "sea" 中刪除 "s" 並將 "s" 的值(115)加入總和。

在 "eat" 中刪除 "t" 並將 116 加入總和。

結束時,兩個字串相等,115 + 116 = 231 就是符合條件的最小和。

示例 2:

輸入: 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個字元

**如下:

public

intminimumdeletesum(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 並新增 ...