Maximum Product of Word Lengths
来源:互联网 发布:免费域名申请tk 编辑:程序博客网 时间:2024/04/29 20:22
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.
这个题用蛮力法超时:
public class Solution { public int maxProduct(String[] words) { int n=words.length; int max=0; for(int i=0;i<n-1;i++){ for(int j=i+1;j<n;j++){ if(!haveCommonLetter(words[i],words[j])){ int product=words[i].length()*words[j].length(); max=product>max?product:max; } } } return max; }private boolean haveCommonLetter(String word1, String word2) {// TODO Auto-generated method stubSet<Character> set=new HashSet<Character>();for(int i=0;i<word1.length();i++){if(!set.contains(word1.charAt(i))){set.add(word1.charAt(i));}}for(int i=0;i<word2.length();i++){if(set.contains(word2.charAt(i))){return true;}}return false;}}
正确解法如下:
用一个int表示一个word的情况,每一个bit记录字母是否存在,然后&操作符就可以相当于求交集,实在是巧妙,值得学习。
public class Solution { public int maxProduct(String[] words) { int len = words.length; if(len <=1 ) return 0; int[] mask = new int[len]; for(int i=0;i<len;i++) { for(int j=0;j<words[i].length();j++) { mask[i] |= 1 << (words[i].charAt(j)-'a'); } } int max = 0; for(int i=0;i<len;i++) { for(int j=i+1;j<len;j++) { if((mask[i] & mask[j]) == 0) { max = Math.max(max, words[i].length() * words[j].length()); } } } return max; } }
0 0
- Maximum Product of Word Lengths
- Maximum Product of Word Lengths
- Maximum Product of Word Lengths
- Maximum Product of Word Lengths
- Maximum Product of Word Lengths
- Maximum Product of Word Lengths
- Maximum Product of Word Lengths
- Maximum Product of Word Lengths
- Maximum Product of Word Lengths
- Maximum Product of Word Lengths
- Maximum Product of Word Lengths
- Maximum Product of Word Lengths
- Maximum Product of Word Lengths
- Maximum Product of Word Lengths
- leetcode Maximum Product of Word Lengths
- Leetcode: Maximum Product of Word Lengths
- 【leetcode】318. Maximum Product of Word Lengths
- Leetcode202: Maximum Product of Word Lengths
- 使用cmd执行指令,遇到中间有空格的路径处理方法
- Struts2 自定义拦截栈
- 51单片机蜂鸣器操作
- javascript中的“捕获组”是什么意思
- myeclipse安装SVN插件
- Maximum Product of Word Lengths
- <c:forEach>
- 差分约束系统入门
- 中兴笔试
- 调试代码 显示rawbin
- 华为2017年大牛机试题—10进制转换位12进制
- struts基础
- 第2周项目3-体验复杂度(1)
- 51nod1002 数塔取数问题