维持一个maks数组,mask[i]中保存了一个这样的整数:将该整数转为2进制,其第i个位置若为1则表示该字符串中有第i个字母。
若两个mask中的元素想与为0,则保证其两个字符串没有相同的字符。
class Solution {
public int maxProduct(String[] words) {
int mask[] = new int[words.length];
for (int i=0;i<words.length;i++){
for (int j=0;j<words[i].length();j++){
mask[i] = mask[i] | 1<<(words[i].charAt(j) - 'a');
}
}
int max = 0;
for (int i=0;i<words.length;i++){
for (int j = i+1;j<words.length;j++){
if ((mask[i] & mask[j]) == 0)
{
if (words[i].length()*words[j].length() > max){
max = words[i].length()*words[j].length();
}
}
}
}
return max;
}
}