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

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

PS:

全是小写字母, 可以用一个32为整数表示一个word中出现的字母,

hash[i]存放第i个单词出现过的字母, a对应32位整数的最后一位,

b对应整数的倒数第二位, 依次类推. 时间复杂度O(N^2)

判断两两单词按位与的结果, 如果结果为0且长度积大于最大积则更新

class Solution {
public int maxProduct(String[] words) {
int n = words.length;
int[] wordsBit = new int[n];
for (int i = 0; i < n; i++) {
wordsBit[i] = convertWordToBit(words[i]);
}
int max = 0;
for (int i = 0; i < n; i++) {
for (int j = i + 1; j < n; j++) {
if ((wordsBit[i] & wordsBit[j]) == 0) {
int newLength = words[i].length() * words[j].length();
max = max < newLength ? newLength : max;
}
}
}
return max;
} private int convertWordToBit(String word) {
int wordBit = 0;
int n = word.length();
for (int i = 0; i < n; i++) {
wordBit = wordBit | (1 << (word.charAt(i) - 'a'));
}
return wordBit;
}
}

Java实现 LeetCode 318 最大单词长度乘积的更多相关文章

  1. Leetcode 318.最大单词长度乘积

    最大单词长度乘积 . 示例 1: 输入: ["abcw","baz","foo","bar","xtfn&qu ...

  2. [Leetcode] 第318题 最大单词长度乘积

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

  3. 318 Maximum Product of Word Lengths 最大单词长度乘积

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

  4. [Swift]LeetCode318. 最大单词长度乘积 | Maximum Product of Word Lengths

    Given a string array words, find the maximum value of length(word[i]) * length(word[j]) where the tw ...

  5. [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 ...

  6. [LeetCode] Maximum Product of Word Lengths 单词长度的最大积

    Given a string array words, find the maximum value of length(word[i]) * length(word[j]) where the tw ...

  7. 程序设计入门—Java语言 第六周编程题 1 单词长度(4分)

    第六周编程题 依照学术诚信条款,我保证此作业是本人独立完成的. 1 单词长度(4分) 题目内容: 你的程序要读入一行文本,其中以空格分隔为若干个单词,以'.'结束.你要输出这行文本中每个单词的长度.这 ...

  8. 中国MOOC_零基础学Java语言_第6周 使用对象_1单词长度

    第6周编程题 查看帮助 返回   第6周编程题 依照学术诚信条款,我保证此作业是本人独立完成的. 温馨提示: 1.本次作业属于Online Judge题目,提交后由系统即时判分. 2.学生可以在作业截 ...

  9. Java实现 LeetCode 819 最常见的单词(暴力)

    819. 最常见的单词 给定一个段落 (paragraph) 和一个禁用单词列表 (banned).返回出现次数最多,同时不在禁用列表中的单词. 题目保证至少有一个词不在禁用列表中,而且答案唯一. 禁 ...

随机推荐

  1. Redis学习笔记(三) 字典

    Redis的字典使用哈希表作为底层实现,一个哈希表中可以有多个哈希表节点,而每个哈希节点就保存在字典中的一个键值对. redis字典所用的哈希表由disht结构定义. typedef struct d ...

  2. C# 数据操作系列 - 3. ADO.NET 离线查询

    0. 前言 在上一篇中,我故意留下了查询的示范没讲.虽然说可以通过以下代码获取一个DataReader: IDataReader reader = command.ExecuteReader(); 然 ...

  3. 比AtomicLong更优秀的LongAdder确定不来了解一下吗?

    前言 思维导图.png 文章中所有高清无码图片在公众号号回复: 图片666 即可查阅, 可直接关注公众号:壹枝花算不算浪漫 最近阿里巴巴发布了Java开发手册(泰山版) (公众号回复: 开发手册 可收 ...

  4. vue实例中created、mounted以及其他类型说明

    生命周期图示(图片来自coderwhy老师): 每个 Vue 实例在被创建之前都要经过一系列的初始化过程.例如,实例需要配置数据观测(data observer).编译模版.挂载实例到 DOM ,然后 ...

  5. SpringBoot + react app 项目,解决跨域问题的配置(跳坑含泪总结,亲测有效)

    方法一: 对某一接口配置,可以在方法上添加 @CrossOrigin 注解 @CrossOrigin(origins = {"http://localhost:8110", &qu ...

  6. Python 常用编码规范

    一.简明概述 1.编码 如无特殊情况, 文件一律使用 UTF-8 编码 如无特殊情况, 文件头部必须加入#-*-coding:utf-8-*-标识 2.代码格式 2.1.缩进 统一使用 4 个空格进行 ...

  7. 浅谈PostgreSQL用户权限

    问题 经常在PG群里看到有人在问“为什么我对表赋予了权限:但是还是不能访问表” 解析 若你看懂德哥这篇文章PostgreSQL逻辑结构和权限体系介绍:上面对你就不是困扰你的问题 解决这个问题很简单:在 ...

  8. Excel 数据导入至Sqlserver 数据库中 ltrim() 、rtrim() 、replace() 函数 依次空格无效问题

    今天导一些数据从Excel中至Sqlserver 数据库中,在做数据合并去重的时候发现,有两条数据一模一样,竟然没有进行合并: 最后发现有一条后面有个“空格”,正是因为这个“空格”让我抓狂许久,因为它 ...

  9. 快手4-5月Java岗面经

    快手面试准备 我的牛客网帖子链接:https://www.nowcoder.com/discuss/429362 一面: 基础知识 1.java基本数据类型(8种) 1.基本数据类型有哪些,各占多少位 ...

  10. 依赖工程开发,编译报错Command Libtool failed with a nonzero exit code

    升级AFN之后,SDK工程始终编译不通过找不到SDK.a 原因在SDK Target ->Build phases ->Link Binary With Libraries 多添加了SDK ...