DEV Community

Abhishek Chaudhary
Abhishek Chaudhary

Posted on

Maximum Product of Word Lengths

Given a string array words, return the maximum value of length(word[i]) * length(word[j]) where the two words do not share common letters. If no such two words exist, return 0.

Example 1:

Input: words = ["abcw","baz","foo","bar","xtfn","abcdef"]
Output: 16
Explanation: The two words can be "abcw", "xtfn".

Example 2:

Input: words = ["a","ab","abc","d","cd","bcd","abcd"]
Output: 4
Explanation: The two words can be "ab", "cd".

Example 3:

Input: words = ["a","aa","aaa","aaaa"]
Output: 0
Explanation: No such pair of words.


  • 2 <= words.length <= 1000
  • 1 <= words[i].length <= 1000
  • words[i] consists only of lowercase English letters.


class Solution:
    def maxProduct(self, words: List[str]) -> int:
        n = len(words)
        lens = [len(word) for word in words]
        words = [set(word) for word in words]
        mprod = 0
        for i in range(n):
            for j in range(n):
                if i != j:
                    if len(set.intersection(words[i], words[j])) == 0:
                        mprod = max(mprod, lens[i] * lens[j])
        return mprod
Enter fullscreen mode Exit fullscreen mode

Top comments (0)