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]; 4 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 } 17 18 return res; 19 } 20 }; 21 22 class Solution { 23 public: 24 int maxProduct(const vector<string> &words) { 25 unordered_map<int, int> um; 26 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 } 34 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 } 40 41 return res; 42 } 43 };