318. Maximum Product Of Word Lengths¶
Difficulty: Medium
LeetCode Problem View on GitHub
318. Maximum Product of Word Lengths
Medium
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 <= 10001 <= words[i].length <= 1000words[i]consists only of lowercase English letters.
Solution¶
class Solution {
public int maxProduct(String[] words) {
int n = words.length;
int freq[][] = new int[n][26];
for (int i = 0; i < n; i++) {
String s = words[i];
for (int j = 0; j < s.length(); j++)
freq[i][s.charAt(j) - 'a']++;
}
int maxi = 0;
for (int i = 0; i < n; i++) {
for (int j = i + 1; j < n; j++) {
boolean isCommon = false;
for (int k = 0; k < 26; k++) {
if (freq[i][k] > 0 && freq[j][k] > 0) {
isCommon = true;
break;
}
}
if (isCommon == false)
maxi = Math.max(maxi, words[i].length() * words[j].length());
}
}
return maxi;
}
}
Complexity Analysis¶
- Time Complexity:
O(?) - Space Complexity:
O(?)
Approach¶
Detailed explanation of the approach will be added here