[Leetcode] 318. Maximum Product of Word Lengths 解题报告
来源:互联网 发布:威克多羽毛球鞋淘宝 编辑:程序博客网 时间:2024/06/05 02:44
题目:
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:
Given ["abcw", "baz", "foo", "bar", "xtfn", "abcdef"]
Return 16
The two words can be "abcw", "xtfn"
.
Example 2:
Given ["a", "ab", "abc", "d", "cd", "bcd", "abcd"]
Return 4
The two words can be "ab", "cd"
.
Example 3:
Given ["a", "aa", "aaa", "aaaa"]
Return 0
No such pair of words.
思路:
这道题目如果用朴素方法求解估计会超时。有一个比较巧妙的思路就是将一个word根据其组成的字母,映射到一个正数。由于int是32位,所以我们可以用0-25位分别表示是否出现了a..., z。这样最后只需要依次按位与操作就可以确定两个单词是否包含重复字符。
代码:
class Solution {public: int maxProduct(vector<string>& words) { unordered_map<int, int> hash; for(int i = 0; i < words.size(); ++i) { int key = 0; for(int j = 0; j < words[i].size(); ++j) { key |= (1 << (words[i][j] - 'a')); } if(hash.count(key) == 0 || hash[key] < words[i].length()) { hash[key] = words[i].length(); // update to the maximum word length (e.g., ab vs aabb) } } int max_product = 0; for(auto v1 : hash) { for(auto v2 : hash) { if(v1 == v2) { // exclude the same word continue; } if((v1.first & v2.first) == 0) { // try to find if the two words have common characters max_product = max(max_product, v1.second * v2.second); } } } return max_product; }};
阅读全文
0 0
- [leetcode] 318. Maximum Product of Word Lengths 解题报告
- [Leetcode] 318. Maximum Product of Word Lengths 解题报告
- 318. Maximum Product of Word Lengths解题报告
- LeetCode 318. Maximum Product of Word Lengths解题记录
- 【leetcode】318. Maximum Product of Word Lengths
- 318. Maximum Product of Word Lengths LeetCode
- [leetcode] 318. Maximum Product of Word Lengths
- LeetCode: 318. Maximum Product of Word Lengths
- LeetCode 318. Maximum Product of Word Lengths
- leetcode 318. Maximum Product of Word Lengths
- [LeetCode]318. Maximum Product of Word Lengths
- [LeetCode]318. Maximum Product of Word Lengths
- LeetCode 318. Maximum Product of Word Lengths
- LeetCode *** 318. Maximum Product of Word Lengths
- [Leetcode] 318. Maximum Product of Word Lengths
- leetcode 318. Maximum Product of Word Lengths
- [leetcode]318. Maximum Product of Word Lengths
- 【LeetCode】318. Maximum Product of Word Lengths
- 【个人笔记重点,不作为参考】主题:angular2 constructor
- webpack入门
- 存储过程
- Java集合---纯小白自己声明给自己的---勿喷
- |2105|小泉的难题
- [Leetcode] 318. Maximum Product of Word Lengths 解题报告
- Oracle Spatial常用方法记录
- Java多线程笔记
- NiFi学习笔记(一)——简介
- 【USACO】奶牛求幂
- Swift_类和结构体(Class、struct、两个类引用类型判断 === 等价....)
- 索引
- Android中Serializable和Parcelable序列化对象详解
- Redis 发布订阅