给你一个字符串数组 words
,找出并返回 length(words[i]) * length(words[j])
的最大值,并且这两个单词不含有公共字母。如果不存在这样的两个单词,返回 0
。
示例 1:
输入:words =["abcw","baz","foo","bar","xtfn","abcdef"]
输出:16 解释
这两个单词为 "abcw", "xtfn"
示例 2:
输入:words =["a","ab","abc","d","cd","bcd","abcd"]
输出:4 解释
:这两个单词为"ab", "cd"
示例 3:
输入:words =["a","aa","aaa","aaaa"]
输出:0 解释
不存在这样的两个单词。
思路:先用set()对列表中的单词进行去重。然后对列表中的单词取交集。
class Solution:
def maxProduct(self, words: List[str]) -> int:
a = [set(word) for word in words]
ans = 0
for i in range(len(a)):
for j in range(i+1 , len(a)):
if not a[i].intersection(a[j]):
ans = max(ans, len(words[i]) * len(words[j]))
return ans
注:intersection()函数用于取交集