[LC] 318. Maximum Product of Word Lengths
Given a string array words, find the maximum value of length(word[i]) * length(word[j]) where the two words do not share common letters. You may assume that each word will contain only lower case letters. If no such two words exist, return 0.
Example 1:
Input:["abcw","baz","foo","bar","xtfn","abcdef"]
Output:16The two words can be
Explanation:"abcw", "xtfn".
Example 2:
Input:["a","ab","abc","d","cd","bcd","abcd"]
Output:4The two words can be
Explanation:"ab", "cd".
Example 3:
Input:["a","aa","aaa","aaaa"]
Output:0No such pair of words.
Explanation:
class Solution {
    public int maxProduct(String[] words) {
        int[] checker = new int[words.length];
        if (words == null || words.length == 0) {
            return 0;
        }
        int res = 0;
        for (int i = 0; i < words.length; i++) {
            String word = words[i];
            for (int j = 0; j < word.length(); j++) {
                char curChar = word.charAt(j);
                checker[i] |= 1 << curChar - 'a';
            }
        }
        for (int i = 0; i < words.length - 1; i++) {
            for (int j = i + 1; j < words.length; j++) {
                if ((checker[i] & checker[j]) == 0) {
                    res = Math.max(res, words[i].length() * words[j].length());
                }
            }
        }
        return res;
    }
}
public class Solution {
  public int largestProduct(String[] dict) {
    // Write your solution here
    Arrays.sort(dict, new Comparator<String>(){
      @Override
      public int compare(String a, String b) {
        return b.length() - a.length();
      }
    });
    int[] arr = new int[dict.length];
    for (int i = 0; i < dict.length; i++) {
      for (int j = 0; j < dict[i].length(); j++) {
        arr[i] |= 1 << dict[i].charAt(j) - 'a';
      }
    }
    int res = 0;
    for (int i = 1; i < dict.length; i++) {
      for (int j = 0; j < i; j++) {
        if (dict[i].length() * dict[j].length() <= res) {
          break;
        }
        if ((arr[i] & arr[j]) == 0) {
          res = dict[i].length() * dict[j].length();
        }
      }
    }
    return res;
  }
}
[LC] 318. Maximum Product of Word Lengths的更多相关文章
- leetcode 318. Maximum Product of Word Lengths
		
传送门 318. Maximum Product of Word Lengths My Submissions QuestionEditorial Solution Total Accepted: 1 ...
 - LeetCode 【318. Maximum Product of Word Lengths】
		
Given a string array words, find the maximum value of length(word[i]) * length(word[j]) where the tw ...
 - 318. Maximum Product of Word Lengths
		
Given a string array words, find the maximum value of length(word[i]) * length(word[j]) where the tw ...
 - 318. Maximum Product of Word Lengths ——本质:英文单词中字符是否出现可以用26bit的整数表示
		
Given a string array words, find the maximum value of length(word[i]) * length(word[j]) where the tw ...
 - Java [Leetcode 318]Maximum Product of Word Lengths
		
题目描述: Given a string array words, find the maximum value of length(word[i]) * length(word[j]) where ...
 - leetcode@ [318] Maximum Product of Word Lengths (Bit Manipulations)
		
https://leetcode.com/problems/maximum-product-of-word-lengths/ Given a string array words, find the ...
 - [leetcode]318. Maximum Product of Word Lengths单词长度最大乘积
		
Given a string array words, find the maximum value of length(word[i]) * length(word[j]) where the tw ...
 - 【LeetCode】318. Maximum Product of Word Lengths 解题报告(Python)
		
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 set 位运算 日期 题目地址:https://le ...
 - 318 Maximum Product of Word Lengths 最大单词长度乘积
		
给定一个字符串数组words,找到length(word[i]) * length(word[j])的最大值,并且两个单词不含公共的字母.你可以认为每个单词只包含小写字母.如果不存在这样的两个单词,返 ...
 
随机推荐
- Vue中Js动画 与Velocity.js 多组件多元素  列表过渡
			
Vue提供我们很多js动画钩子 写在tansition标签内部 入场动画 @before-enter="" 处理函数收到一个参数(e l) el为这个元素 @enter=" ...
 - 一个或多个实体的验证失败。有关详细信息,请参阅“EntityValidationErrors”属性
			
自定义异常类:FormattedDbEntityValidationException public class FormattedDbEntityValidationException : Exce ...
 - 瑞芯微RK3399六核-迅为3399开发板介绍
			
迅为3399开发板基于瑞芯微的RK3399处理器设计,Rockchip RK3399是瑞芯微推出的一款低功耗.高性能的应用处理器芯片,该芯片基于Big.Little架构,即具有独立的NEON协同处理器 ...
 - sublime3激活方法
			
激活方法参考这里 $ tail -n4 /etc/hosts # https://blog.csdn.net/DeMeng33/article/details/80536926 127.0.0.1 w ...
 - 03-string字符串和while循环
			
目录 03-string字符串和while循环 1. string介绍 2. 字符串的运算 3. 下标及分片 4. 格式化输出 5. f-string格式化输出用法 6. 字符串方法 7. 布尔值,空 ...
 - MySQL--SHOW TABLE STATUS命令
			
show table status 获取表的信息 来自:http://blog.csdn.net/java2000_wl/article/details/7935035
 - Velocity脚本入门教程
			
下面资料整理自网络 一.Velocity介绍 Velocity是Apache公司的开源产品,是一套基于Java语言的模板引擎,可以很灵活的将后台数据对象与模板文件结合在一起,说的直白一点,就是允许任何 ...
 - Golang解析json的几种方法
			
Golang解析json的几种方法 概要 使用Golang调用其它平台API接口时总会被多层的json串给恶心到,我记录一下自己解析json的几种方法. 一.自带的json包 func JsonUnm ...
 - 直播弹幕抓取逆向分析流程总结 websocket,flash
			
前端无秘密 直播的逆向抓取说到底是前端的调试和逆向技术,加上部分的dpa(深入包分析,个人能力尚作不到深入,只能作简单分析)难度较低 目前互联网直播弹幕主要是两种技术实现. 1websocket消息通 ...
 - linux epoll 任务队列多线程模型
			
/* * *EPOLL ET 触发必须使用非阻塞,LT触发可以阻塞/非阻塞. *read 函数 非阻塞读需 忙轮寻 soket关闭返回0,循环读完数据 *如果已经读完再读read返回 -1,errno ...