Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class Solution {
- public:
- long long hashf(string s) {
- long long ss = 1;
- int p = 31;
- long long mod = 1e9 + 7;
- int mx = (int) s[0];
- int mi = (int) s[0];
- for (int i = 0; i < s.size(); i++) {
- if (s[i] == 'a' || s[i] == 'e' || s[i] == 'i' || s[i] == 'o' || s[i] == 'u' || s[i] == 'y') {
- ss *= ((int) s[i] * p * p) % mod;
- } else {
- ss *= ((int) s[i] * p * p * p) % mod;
- }
- mx = max(mx, (int) s[i]);
- mi = min(mi, (int) s[i]);
- ss %= mod;
- }
- ss *= mi % mod;
- ss %= mod;
- ss *= mx % mod;
- ss %= mod;
- ss *= s.size() % mod;
- ss %= mod;
- return ss;
- }
- vector<vector<string>> groupAnagrams(vector<string>& v) {
- unordered_map<long long, vector <string> > map;
- for (int i = 0; i < v.size(); i++) {
- map[hashf(v[i])].push_back(v[i]);
- }
- vector<vector<string>> vv;
- for (auto i : map) {
- vv.push_back(i.second);
- }
- return vv;
- }
- };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement