求解代码
publicintmaxProduct(String[]words){intn=words.length;int[]masks=newint[n];int[]lens=newint[n];for(inti=0;i<n;i++){lens[i]=words[i].length();for(charc:words[i].toCharArray()){masks[i]|=1<<(c-'a');}}intmax=0;for(inti=0;i<n;i++){for(intj=i+1;j<n;j++){if((masks[i]&masks[j])==0){max=Math.max(max,lens[i]*lens[j]);}}}returnmax;}小贴士
遍历每个字符串,用一个int整数(掩码)表示该字符串包含的字符。
解释一下:
如果二进制第c-'a’位为 1,则表示包含字符c。
比如包含a则第 0 位为 1,包含b则第 1 位为 1。