Java | Leetcode Java题解之第318题最大单词长度乘积

题目:

题解:

java 复制代码
class Solution {
    public int maxProduct(String[] words) {
        Map<Integer, Integer> map = new HashMap<Integer, Integer>();
        int length = words.length;
        for (int i = 0; i < length; i++) {
            int mask = 0;
            String word = words[i];
            int wordLength = word.length();
            for (int j = 0; j < wordLength; j++) {
                mask |= 1 << (word.charAt(j) - 'a');
            }
            if (wordLength > map.getOrDefault(mask, 0)) {
                map.put(mask, wordLength);
            }
        }
        int maxProd = 0;
        Set<Integer> maskSet = map.keySet();
        for (int mask1 : maskSet) {
            int wordLength1 = map.get(mask1);
            for (int mask2 : maskSet) {
                if ((mask1 & mask2) == 0) {
                    int wordLength2 = map.get(mask2);
                    maxProd = Math.max(maxProd, wordLength1 * wordLength2);
                }
            }
        }
        return maxProd;
    }
}
相关推荐
ejjdhdjdjdjdjjsl1 分钟前
C#文件流操作技巧
java·开发语言·spring
虾说羊1 分钟前
HashMap详解
java
lkbhua莱克瓦2412 分钟前
反射3-反射获取构造方法
java·开发语言·反射
wanghowie21 分钟前
02.04.01 Java Stream API 进阶指南:从底层实现到性能优化
java·开发语言·性能优化
专注于大数据技术栈27 分钟前
java学习--Date
java·学习
YGGP36 分钟前
【Golang】LeetCode 5. 最长回文子串
算法·leetcode
青莲84337 分钟前
Java基础篇——第三部
java·前端
这周也會开心42 分钟前
Map集合的比较
java·开发语言·jvm
while(1){yan}1 小时前
SpringIoc
java·spring boot·spring·java-ee