318. Maximum Product of Word Lengths

来源:互联网 发布:金融大数据平台 编辑:程序博客网 时间:2024/06/05 09:38

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.

Subscribe to see which companies asked this question

class Solution {public:    int maxProduct(vector<string>& words) {        vector< bitset<26> > v1(words.size(),bitset<26>());        int result=0;        for(int i=0;i<words.size();++i)        {            for(int t=0;t<words[i].size();++t)            {                v1[i].set(words[i][t]-'a');            }        }        for(int i=1;i<v1.size();++i)        {            for(int j=0;j<i;++j)            {                if((v1[i]&v1[j])==0)                {                    int len=(words[i].size()*words[j].size());                    result=max(result,len);                }                            }        }        return result;    }};

0 0