## DEV Community

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.

Constraints:

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

SOLUTION:

``````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
``````