码迷,mamicode.com
首页 > 其他好文 > 详细

*Maximum Product of Word Lengths

时间:2016-08-16 10:28:50      阅读:152      评论:0      收藏:0      [点我收藏+]

标签:

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.

Credits:
Special thanks to @dietpepsi for adding this problem and creating all test cases.

public class Solution {
    public int maxProduct(String[] words) {
        int max = 0;


        int[] masks = new int[words.length]; // alphabet masks

        for(int i = 0; i < masks.length; i++){
            for(char c: words[i].toCharArray()){
                masks[i] |= 1 << (c - ‘a‘);
            }
        }
    
        for(int i = 0; i < masks.length; i++){
            for(int j = i + 1; j < masks.length; j++){
                if((masks[i] & masks[j]) == 0){
                    max = Math.max(max, words[i].length() * words[j].length());
                }
            }
        }

        return max;
    }
}

reference:

https://discuss.leetcode.com/topic/31769/32ms-java-ac-solution/17

*Maximum Product of Word Lengths

标签:

原文地址:http://www.cnblogs.com/hygeia/p/5775278.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!