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。

相关推荐
编码忘我1 分钟前
java开发模式之静态代理、动态代理、CGLIB代理
java
sw1213891 分钟前
C++与Rust交互编程
开发语言·c++·算法
冬夜戏雪2 分钟前
实习面经摘录(八)
java
拾年2754 分钟前
别再让 NullPointerException 搞崩你的代码了!Optional + Stream 组合拳详解
java
2401_857918295 分钟前
模板编译期机器学习
开发语言·c++·算法
weixin_404157686 分钟前
Java高级面试与工程实践问题集(一)
java·开发语言·面试
cyforkk8 分钟前
Spring AOP 进阶:揭秘 @annotation 参数绑定的底层逻辑
java·数据库·spring
清风徐来QCQ8 分钟前
Java2(valueOf,Character,StringBuilder,设计模式)
java·开发语言
2403_8355684710 分钟前
多平台UI框架C++开发
开发语言·c++·算法
台XX12 分钟前
Java容器常用方法
java·开发语言