给定一个字符串数组 words,找到 length(word[i]) * length(word[j])
的最大值,并且这两个单词不含有公共字母。你可以认为每个单词只包含小写字母。如果不存在这样的两个单词,返回 0。
示例 1:
输入: ["abcw","baz","foo","bar","xtfn","abcdef"] 输出: 16 解释: 这两个单词为 "abcw", "xtfn"。
示例 2:
输入: ["a","ab","abc","d","cd","bcd","abcd"] 输出: 4 解释: 这两个单词为 "ab", "cd"。
示例 3:
输入: ["a","aa","aaa","aaaa"] 输出: 0 解释: 不存在这样的两个单词。
my solution (slower)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16class Solution:
def maxProduct(self, words):
"""
:type words: List[str]
:rtype: int
"""
d = {}
for w in words:
d[w] = set(w)
ans = 0
for i in range(len(words)-1):
for j in range(i+1, len(words)):
if not (d[words[i]] & d[words[j]]):
ans = max(ans, len(words[i]) * len(words[j]))
return ansa faster solution
1 | class Solution: |