Advertisement
Guest User

Untitled

a guest
Apr 6th, 2020
151
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.15 KB | None | 0 0
  1. class Solution {
  2. public:
  3.     long long hashf(string s) {
  4.         long long ss = 1;
  5.         int p = 31;
  6.         long long mod = 1e9 + 7;
  7.         int mx = (int) s[0];
  8.         int mi = (int) s[0];
  9.         for (int i = 0; i < s.size(); i++) {
  10.             if (s[i] == 'a' || s[i] == 'e' || s[i] == 'i' || s[i] == 'o' || s[i] == 'u' || s[i] == 'y') {
  11.                 ss *= ((int) s[i] * p * p) % mod;
  12.             } else {
  13.                 ss *= ((int) s[i] * p * p * p) % mod;
  14.             }
  15.             mx = max(mx, (int) s[i]);
  16.             mi = min(mi, (int) s[i]);
  17.            
  18.             ss %= mod;
  19.         }
  20.         ss *= mi % mod;
  21.         ss %= mod;
  22.         ss *= mx % mod;
  23.         ss %= mod;
  24.         ss *= s.size() % mod;
  25.         ss %= mod;
  26.         return ss;
  27.     }
  28.    
  29.     vector<vector<string>> groupAnagrams(vector<string>& v) {
  30.         unordered_map<long long, vector <string> > map;
  31.         for (int i = 0; i < v.size(); i++) {
  32.             map[hashf(v[i])].push_back(v[i]);
  33.         }
  34.        
  35.         vector<vector<string>> vv;
  36.         for (auto i : map) {
  37.             vv.push_back(i.second);
  38.         }
  39.         return vv;
  40.     }
  41. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement