JavaScript 中唯一单词的最大长度乘积


问题

我们需要编写一个 JavaScript 函数,该函数以一个包含字符串的数组(仅小写字母表字符串)作为第一个,也是唯一的参数。

该函数应从数组中选择两个这样的字符串,这两个字符串没有共同的字符且有最大的长度乘积。然后,我们的函数应返回这两个字符串的长度乘积。如果数组中不存在这样的字符串,则应返回 0。

例如,如果输入函数是 -

const arr = ["karl", "n", "the", "car", "mint", "alpha"];

则输出应为 -

const output = 20;

输出说明

单词“mint”和“alpha”没有共用单词,并且它们的长度乘积为 20。

示例

相应的代码为 -

const arr = ["karl", "n", "the", "car", "mint", "alpha"];
const maxLengthProduct = (arr = []) => {
   const array = [];
   arr.forEach(str => {
      let curr = 0;
      for(let i = 0; i < str.length; i++){
         curr |= 1<<(str.charCodeAt(i) - 97);
      };
      array.push(curr);
   });
   let res = 0;
   for(let i = 0 ; i < array.length; i++) {
      for(let j = i + 1; j < array.length ; j++) {
         if((array[i] & array[j]) === 0) {
            res = Math.max(res, arr[i].length * arr[j].length);
         }
      }
   }
   return res;
};
console.log(maxLengthProduct(arr));

输出

控制台中的输出为 -

20

更新于:2021 年 3 月 20 日

84 次浏览

开启你的 事业

完成本课程获得认证

开始
广告