LCR005-最大单词长度乘积

求解代码

java 复制代码
    public int maxProduct(String[] words) {
        int n = words.length;
        int[] masks = new int[n];
        int[] lens = new int[n]; 
        for (int i = 0; i < n; i++) {
            lens[i] = words[i].length(); 
            for (char c : words[i].toCharArray()) {
                masks[i] |= 1 << (c - 'a');
            }
        }
        int max = 0;
        for (int i = 0; i < n; i++) {
            for (int j = i + 1; j < n; j++) {
                if ((masks[i] & masks[j]) == 0) {
                    max = Math.max(max, lens[i] * lens[j]); 
                }
            }
        }
        return max;
    }

小贴士

遍历每个字符串,用一个 int 整数(掩码)表示该字符串包含的字符。

解释一下:

如果二进制第c-'a'位为 1,则表示包含字符c

比如包含a则第 0 位为 1,包含b则第 1 位为 1。

相关推荐
2401_838472512 小时前
单元测试在C++项目中的实践
开发语言·c++·算法
码农阿豪2 小时前
影刀RPA与Java融合实践:打造高效智能的高铁票务解决方案
java·python·rpa
naruto_lnq2 小时前
移动语义与完美转发详解
开发语言·c++·算法
龚礼鹏2 小时前
图像显示框架十一——BufferQueue的工作流程(基于Android 15源码分析)
java·网络·数据库
爬山算法2 小时前
Hibernate(72)如何在NoSQL数据库中使用Hibernate?
java·nosql·hibernate
毕设源码-赖学姐2 小时前
【开题答辩全过程】以 基于spring boot的国学诗词网站设计与实现--为例,包含答辩的问题和答案
java·spring boot·后端
梦想画家2 小时前
掌控并发的灵魂:Go context 从入门到实战全解析
开发语言·golang
yunsr2 小时前
python作业1
开发语言·python·算法
Hellc0072 小时前
Jenkins 上下游 Job + Docker 镜像部署完整实战(避坑版)
java·docker·jenkins