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 次瀏覽

開啟你的 事業

完成本課程獲得認證

開始
廣告