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
广告