java面试题(10)
来源:互联网 发布:nba2k16乔丹捏脸数据 编辑:程序博客网 时间:2024/06/06 18:16
原题:
// 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) { if(words.length == 0 || words == null) return 0; int length = words.length; int[] value = new int[length]; int max = 0; for(int i = 0; i < length; i++) { String temp = words[i]; value[i] = 0; for(int j = 0; j < temp.length(); j++) { value[i] |= 1 << (temp.charAt(j) - 'a'); } } for(int i = 0; i < length; i++) { for(int j = 1; j < length; j++) { if((value[i] & value[j]) == 0 && (words[i].length() * words[j].length()) > max) { max = words[i].length() * words[j].length(); } } } return max; }}
解析:主要利用二进制的特点
- 一个字符全部按位或之后,如果两个字符按位与,如果有相同的字母,则按位与肯定不为0,因为他们肯定有相同的1,按位与后会有1出现
阅读全文
0 0
- java面试题(10)
- 面试题(Java)
- JAVA面试题最全集(10)
- Java面试题全集(10)
- Java面试题集--Java面试题(答案)
- java面试题系列10
- java面试题 1-10
- Java面试题(答案)-
- 面试题(三)Java
- 面试题(四)Java
- 面试题(六)Java
- 面试题(七)JAVA
- 面试题(九)JAVA
- JAVA面试题(一)
- Java面试题(一)
- Java面试题(2)
- Java面试题(3)
- Java面试题(4)
- Leetcode题目汇总-Java实现
- java面试题(9)
- jQuery easyUI中表格的跨行跨列
- PKI系统介绍
- response详解
- java面试题(10)
- 独立游戏开发者---孤独前行的梦想家
- SVN项目管理软件使用说明
- 单纯形法MATALAB实现
- 一行代码搞定Android弧形卫星动画菜单(附Demo)
- 讯飞 SDK集成记录
- 无废话ExtJs 入门教程十二[下拉列表联动:Combobox_Two]
- 程序员如何更好的提升自己
- 需求的细化方法之用例驱动