题目
题解
class Solution {
public:
int maxProduct(vector<string>& words) {
int res = 0;
vector<pair<int, int>> vec;
for (auto& word : words) {
// 计算word的位掩码
int mask = 0;
for (int i = 0; i < word.length(); i++) {
mask |= (1 << (word[i] - 'a'));
}
// 计算word和其他每个word的与运算值
for (auto& v : vec) {
// 如果&与运算值为0,则两个单词不存在共同的字符
if ((v.first & mask) == 0)
res = std::max(v.second * (int)word.length(), res);
}
vec.emplace_back(mask, word.length());
}
return res;
}
};