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
Top comments (0)