记录题解:力扣318. 最大单词长度乘积

给你一个字符串数组 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()函数用于取交集

猜你喜欢

转载自blog.csdn.net/weixin_45314061/article/details/130535091
今日推荐