zoukankan      html  css  js  c++  java
  • Leetcode 318.最大单词长度乘积

    最大单词长度乘积

    给定一个字符串数组 words,找到 length(word[i]) * length(word[j]) 的最大值,并且这两个单词不含有公共字母。你可以认为每个单词只包含小写字母。如果不存在这样的两个单词,返回 0

    示例 1:

    输入: ["abcw","baz","foo","bar","xtfn","abcdef"]

    输出: 16

    解释: 这两个单词为"abcw", "xtfn"

    示例 2:

    输入: ["a","ab","abc","d","cd","bcd","abcd"]

    输出: 4

    解释: 这两个单词为 "ab", "cd"

    示例 3:

    输入: ["a","aa","aaa","aaaa"]

    输出: 0

    解释: 不存在这样的两个单词。

    使用比特进行哈希。

     1 public class Solution {
     2     public int maxProduct(String[] words) {
     3         int[] f = new int[words.length];
     4         for(int i=0; i<words.length; i++) {
     5             char[] wa = words[i].toCharArray();
     6             for(int j=0; j<wa.length; j++) {
     7                 f[i] |= 1 << (wa[j]-'a');
     8             }
     9         }
    10         int max = 0;
    11         for(int i=0; i<words.length-1; i++) {
    12             for(int j=i+1; j<words.length; j++) {
    13                 if ((f[i] & f[j]) == 0) max = Math.max(max, words[i].length() * words[j].length());
    14             }
    15         }
    16         return max;
    17     }
    18 }
  • 相关阅读:
    lambda表达式
    各种模块化简介及演变过程
    filter-api文档
    RegExp正则表达式规则以及常用正则表达式
    各种循环遍历对比
    条件语句对比
    莫队小结
    停更公告
    POJ2728 Desert King
    笛卡尔树Cartesian Tree
  • 原文地址:https://www.cnblogs.com/kexinxin/p/10235188.html
Copyright © 2011-2022 走看看