318. Maximum Product of Word Lengths

来源:互联网 发布:网络男女对唱歌曲大全 编辑:程序博客网 时间:2024/05/29 19:46

这道题给我们了一个单词数组,让我们求两个没有相同字母的单词的长度之积的最大值。我开始想的方法是每两个单词先比较,如果没有相同字母,则计算其长度之积,然后每次更新结果就能找到最大值。

我只想到了暴力的方法,所以看了大神的博客,发现确实是要一个一个比较,但是不是比较两个字符串,而是压缩成一个个int,按位相与,如果结果是0说明都不相同,则可以相乘。

class Solution {public:    int maxProduct(vector<string>& words) {        int res = 0;        vector<int> mask(words.size(), 0);        for(int i = 0; i < words.size(); ++i){            for(char c : words[i]){                mask[i] |= 1 << (c - 'a');            }            for(int j = 0; j < i; ++j){                if(!(mask[i] & mask[j])){                    res = max(res, int(words[i].size() * words[j].size()));                }            }        }        return res;    }};


原创粉丝点击