
😎풀이
words
의 각 단어를 순회하며 해당 문자를 비트마스크 화
words
를 2중 순회하며 아무 문자도 겹치지 않은 쌍이 발견될 경우 해당 문자열의 길이를 곱해 최댓값과 비교
- 탐색된 최대 길이 반환
function maxProduct(words: string[]): number {
const n = words.length
const bitMasks = Array(n).fill(0)
let maxLen = 0
for(let i = 0; i < n; i++) {
for(const char of words[i]) bitMasks[i] |= 1 << char.charCodeAt(0)
}
for(let i = 0; i < n; i++) {
for(let j = i + 1; j < n; j++) {
if((bitMasks[i] & bitMasks[j]) === 0) maxLen = Math.max(maxLen, words[i].length * words[j].length)
}
}
return maxLen
};