classSolution{publicintmaxProduct(String[] words){int[] mask =newint[words.length];for(int i =0; i < words.length; i++){for(char c : words[i].toCharArray()){
mask[i]|=1<<(c -'a'+1);// 关键代码}}int res =0;for(int i =0; i < words.length; i++){for(int j = i +1; j < words.length; j++){if((mask[i]& mask[j])==0) res =Math.max(res, words[i].length()* words[j].length());}}return res;}}
文章目录题目描述思路 && 代码题目描述挺不错!有bitmap的感觉了。思路 && 代码思路好想:两两对比,无公共判断,维护 res那么,如何进行公共判断?这个是主要的问题给每个字符串,用一个26位的int数组存储字符出现次数,然后用于对比?(可以,但有点麻烦)那么简化一下,一个 int 存储一个字符串的字符出现次数吧!class Solution { public int maxProduct(String[] words) {