给定一个字符串数组 words,找到 length(word[i]) * length(word[j]) 的最大值,并且这两个单词不含有公共字母。你可以认为每个单词只包含小写字母。如果不存在这样的两个单词,返回 0。
class Solution {
private:
map<int,set<char>>mp;
public:
bool suit(int a,int b)
{
for(auto it = mp[a].begin();it != mp[a].end();it++)
{
if(mp[b].count(*it)) return false;
}
return true;
}
int maxProduct(vector<string>& words) {
for(int i = 0;i<words.size();i++)
{
for(char c : words[i])
{
mp[i].insert(c);
}
}
int ans = 0;
for(int i = 0;i<words.size();i++)
{
for(int j = i+1;j<words.size();j++)
{
if(suit(i,j))
{
ans = max(ans,(int)(words[i].size()*words[j].size()));
}
}
}
return ans;
}
};