JavaScript 中的最小删除字符数

问题

我们需要编写一个 JavaScript 函数,该函数接受两个英文小写字母字符串 str1 和 str2,分别作为第一个和第二个参数。

我们的函数应该查找并返回已删除字符的最低 ASCII 总和,以使两个字符串相等。

例如,如果函数的输入是

输入

const str1 = 'sea';

const str2 = 'eat';

输出

const output = 231;

输出说明

从“sea”中删除“s”会将“s”的 ASCII 值 (115) 添加到总和中。

从“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

以上是 JavaScript 中的最小删除字符数 的全部内容, 来源链接: utcz.com/z/331779.html

回到顶部