1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
// @Title: 最大单词长度乘积 (Maximum Product of Word Lengths)
// @Author: 15816537946@163.com
// @Date: 2022-03-16 22:43:43
// @Runtime: 16 ms
// @Memory: 6.3 MB
func maxProduct(words []string) int {
    rec := make([]int, len(words))
    for i, w := range words {
        for _, c := range w {
            rec[i] |= 1 << (c - 'a')
        }
    }

    var ans int
    for i := range rec {
        for j := i + 1; j < len(rec); j++ {
            if rec[i]&rec[j] == 0 {
                ans = max(ans, len(words[i])*len(words[j]))
            }
        }
    }
    return ans
}

func max(a, b int) int {
    if a > b {
        return a
    }
    return b
}