方法:
用二进制的一位表示某一个字母是否出现过,0表示没出现,1表示出现。"abcd"二进制表示00000000 00000000 00000000 00001111、"bc"二进制表示00000000 00000000 00000000 00000110。当两个字符串没有相同的字母时,二进制数与的结果为0。
注意:
数组的长度 words.length
String的长度 words[i].length()
class Solution {
public int maxProduct(String[] words) {
int[] arr = new int[words.length];
for(int i = 0;i<words.length;i++)
//将字符串转化为对应的2进制表示
for(int j = 0;j<words[i].length();j++){
arr[i] |= 1<<(words[i].charAt(j)-'a');
}
int ans = 0;
for(int i = 0;i<words.length;i++)
for(int j = i+1;j<words.length;j++){
if((arr[i]&arr[j]) == 0){
int len = words[i].length()*words[j].length();
ans = ans<len? len:ans;
}
}
return ans;
}
}