描述
求一对字符串,使得这两个字符串的长度之积最大,要求这两个字符串中无相同元素。
解决
二进制存下每个字符的值,然后比较
class Solution {
public:
int maxProduct(vector<string>& words) {
int length = words.size();
vector<int> flag(length, 0);
for (int i = 0; i < length; ++i)
{
for (auto& val : words[i])
{
// cout << val << endl;
flag[i] |= (1 << (val - 'a'));
}
}
int max_val = 0;
for (int i = 0; i < length; ++i)
{
for (int j = i + 1; j < length; ++j)
{
//<< flag[j] << endl;
//cout << (flag[i] & flag[j]) << endl;
if ((flag[i] & flag[j] )== 0)
{
// cout << flag[i] << endl;
int l1 = words[i].size(), l2 = words[j].size();
if (l1 * l2 > max_val)
{
max_val = l1 * l2;
}
}
}
}
return max_val;
}
};