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

2022/2/3 22:14:00

本文主要是介绍剑指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 单词长度的最大乘积Java--二进制状态压缩的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程