classSolution { public: vector<vector<string>> groupStrings(vector<string>& strings) { unordered_map<string, vector<int>> m; // 存下标就行,最后整理再放字符串 int n = strings.size(); for (int i = 0; i < n; ++i) { m[norm(strings[i])].push_back(i); } vector<vector<string>> res; for (constauto &[_, v] : m) { res.push_back({}); for (int i : v) { res.back().push_back(strings[i]); } } return res; }
stringnorm(string s){ int offset = 26 + 'a' - s[0]; for (char &c : s) { c = (c + offset) % 26; } return s; } };