leetcode

Solution to some Leetcode problems written in C++
git clone git://git.dimitrijedobrota.com/leetcode.git
Log | Files | Refs | README | LICENSE

0318.cpp (1141B)


0 class Solution {
1 public:
2 int maxProduct(const vector<string> &words) {
3 static uint32_t masks[1001];
5 int res = 0;
6 for (int i = 0; i < words.size(); i++) {
7 uint32_t mask = 0;
8 for (const char c : words[i])
9 mask |= 1 << (c & 0x1F);
10 masks[i] = mask;
11 for (int j = 0; j < i; j++) {
12 if ((masks[i] & masks[j]) == 0) {
13 res = max(res, (int)(words[i].size() * words[j].size()));
14 }
15 }
16 }
18 return res;
19 }
20 };
22 class Solution {
23 public:
24 int maxProduct(const vector<string> &words) {
25 unordered_map<int, int> um;
27 int res = 0;
28 for (int i = 0; i < words.size(); i++) {
29 uint32_t mask = 0;
30 for (const char c : words[i])
31 mask |= 1 << (c & 0x1F);
32 um[mask] = max(um[mask], (int)words[i].size());
33 }
35 for (const auto [k1, v1] : um) {
36 for (const auto [k2, v2] : um) {
37 if ((k1 & k2) == 0) res = max(res, v1 * v2);
38 }
39 }
41 return res;
42 }
43 };