JavaScript 中字元的最小刪除和
問題
我們要求編寫一個 JavaScript 函式,接受兩個英語小寫字母字串 str1 和 str2,分別作為第一個和第二個引數。
我們的函式應該找到並返回刪除字元以使兩個字串相等的最低 ASCII 和。
例如,如果對函式的輸入是
輸入
const str1 = 'sea'; const str2 = 'eat';
輸出
const output = 231;
輸出說明
從 "sea" 中刪除 "s" 會將 "s" (115) 的 ASCII 值新增到和中。
從 "eat" 中刪除 "t" 會將 116 新增到和中。
最後,兩個字串相等,並且 115 + 116 = 231 是實現此目標的最小和。
例子
以下為程式碼 −
const str1 = 'sea';
const str2 = 'eat';
const minimumSum = (str1 = '', str2 = '') => {
const chartCode = (s = '') => {
let code = 0
for (const c of s) {
code += c.charCodeAt(0)
}
return code
}
let prev = new Array(str2.length + 1).fill(0)
for (let ind1 = str1.length; ind1 >= 0; ind1--) {
const current = new Array(str2.length + 1).fill(0)
for (let ind2 = str2.length; ind2 >= 0; ind2--) {
if (ind1 === str1.length) {
current[ind2] = chartCode(str2.slice(ind2))
} else if (ind2 === str2.length) {
current[ind2] = chartCode(str1.slice(ind1))
} else if (str1[ind1] === str2[ind2]) {
current[ind2] = prev[ind2 + 1]
} else {
current[ind2] = Math.min(
prev[ind2] + (str1[ind1]).charCodeAt(0),
current[ind2 + 1] + (str2[ind2]).charCodeAt(0),
)
}
}
prev = current
}
return prev[0]
}
console.log(minimumSum(str1, str2));輸出
231
廣告
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP