剑指offer 单词长度的最大乘积Java--二进制状态压缩

力扣题目链接
感觉自己是真的菜。。。每次都看大佬题解

public class Solution {
    public int maxProduct(String[] words) {
        

        //字符数组的长度
        int len = words.length;
        //定义一个长度为字符数组长度的新数组
        int[] nums = new int[len];

        //外循环为字符数组的长度
        for(int i=0;i<len;i++){
            //内循环为每个字符串的长度
            for(int j=0;j<words[i].length();j++){
                //charAt(j)-'a':当前字母在当前字符串中的位置
                //words[i].charAt(j)-'a':第i个字符串中第j个字母在整个字符数组中的位置
                nums[i] |= (1<<words[i].charAt(j)-'a');
                System.out.println(nums[i]);
            }
            System.out.println(nums[i]);
        }
        int res = 0;
        for(int i=0;i<len-1;i++){
            for(int j=i+1;j<len;j++){
                //
                if((nums[i]&nums[j]) == 0){
                    res = Math.max(res,words[i].length() * words[j].length());
                }
            }
        }
        return res;
    }
}
上一篇:夯实设计原则之合成复用原则


下一篇:剑指 Offer 15. 二进制中1的个数