問題の解決策を記録する: リコウ 318. 最大語長の積

string の配列を指定して 、 共通の文字を含まない 2 つの単語の最大値をwords見つけて返します。length(words[i]) * length(words[j])そのような 2 つの単語が存在しない場合は、 を返します0

例 1:

入力:単語 =["abcw","baz","foo","bar","xtfn","abcdef"]
出力:16 
解释这两个单词为 "abcw", "xtfn"

例 2:

入力:単語 =["a","ab","abc","d","cd","bcd","abcd"]
出力: :この 2 つの単語は4 
解释"ab", "cd"

例 3:

入力:単語 =["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