剑指 Offer II 005. 单词长度的最大乘积

125 阅读1分钟

剑指 Offer II 005. 单词长度的最大乘积

方法1

var maxProduct = function (words) {
  const len = words.length;
  const arr = new Array(len).fill(0);
  for (let i = 0; i < len; i++) {
    const word = words[i];
    const wordLength = word.length;
    for (let j = 0; j < wordLength; j++) {
      arr[i] |= 1 << (word[j].charCodeAt() - "a".charCodeAt());
    }
  }
  let maxProd = 0;
  for (let i = 0; i < len; i++) {
    for (let j = i + 1; j < len; j++) {
      if ((arr[i] & arr[j]) === 0) {
        maxProd = Math.max(maxProd, words[i].length * words[j].length);
      }
    }
  }
  return maxProd;
};

image.png

方法2

var maxProduct = function (words) {
    var max = 0
    for (var i = 0; i < words.length; i++) {
        for (var j = i + 1; j < words.length; j++) {
            var value = f(words[i], words[j])
            max = Math.max(max, value)
        }
    }
    return max
    function f(s1, s2) {
        var set = Array.from([...s2]).join('')
        var reg = new RegExp(`[${set}]`)
        var flag = reg.test(s1)
        if (flag) return 0;
        return (s1.length) * (s2.length)
    }
};