Given a string array words
, find the maximum value of length(word[i]) * length(word[j])
where the two words do not share common letters. You may assume that each word will contain only lower case letters. If no such two words exist, return 0.
Example 1:
Given ["abcw", "baz", "foo", "bar", "xtfn", "abcdef"]
Return 16
The two words can be "abcw", "xtfn"
.
Example 2:
Given ["a", "ab", "abc", "d", "cd", "bcd", "abcd"]
Return 4
The two words can be "ab", "cd"
.
Example 3:
Given ["a", "aa", "aaa", "aaaa"]
Return 0
No such pair of words.
最笨的办法,程序如下所示:
class Solution {
public int maxProduct(String[] words) {
int len = words.length;
int maxVal = Integer.MIN_VALUE;
for (int i = 0; i < len - 1; ++ i){
String s = words[i];
int[] ch = new int[256];
int sLen = s.length();
for (int j = 0; j < sLen; ++ j){
ch[s.charAt(j)] ++;
}
for (int j = i + 1; j < len; ++ j){
int wordLen = words[j].length();
int m = 0;
for (m = 0; m < wordLen; ++ m){
if (ch[words[j].charAt(m)] != 0){
break;
}
}
if (m == wordLen){
maxVal = Math.max(maxVal, sLen*wordLen);
}
}
}
return maxVal == Integer.MIN_VALUE?0:maxVal;
}
}