剑指 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;
};

方法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)
}
};