LeetCode 49. Group Anagrams

https://leetcode.com/problems/group-anagrams/description/

Given an array of strings, group anagrams together.

For example, given: ["eat", "tea", "tan", "ate", "nat", "bat"]
Return:

[
  ["ate", "eat","tea"],
  ["nat","tan"],
  ["bat"]
] 

Note: All inputs will be in lower-case.

  • 字符串处理简单题,复习下vector,map的使用
  • 主要是利用STL sort得到唯一的key,就可以做hash映射了
  • Solution里提供了两种方法解决,可以比较看下
    • https://leetcode.com/articles/group-anagrams/
  • unordered_map::unordered_map - C++ Reference
    • http://www.cplusplus.com/reference/unordered_map/unordered_map/unordered_map/
  • vector::push_back - C++ Reference
    • http://www.cplusplus.com/reference/vector/vector/push_back/
 1 //
 2 //  main.cpp
 3 //  LeetCode
 4 //
 5 //  Created by Hao on 2017/3/16.
 6 //  Copyright © 2017年 Hao. All rights reserved.
 7 //
 8 
 9 #include <iostream>
10 #include <cstring>
11 #include <vector>
12 #include <unordered_map>    // unordered_map
13 #include <algorithm>        // sort
14 using namespace std;
15 
16 class Solution {
17 public:
18     vector<vector<string>> groupAnagrams(vector<string>& strs) {
19         unordered_map<string, vector<string>>   group;
20         
21         for (auto s : strs) {
22             string key = s;
23             sort(key.begin(), key.end());   // Use the STL sort function to get the ordered string as key
24             group[key].push_back(s);
25         }
26         
27         vector<vector<string>>  result;
28         
29         for (auto iter : group) {
30             result.push_back(iter.second);
31         }
32         
33         return result;
34     }
35 };
36 
37 int main(int argc, char* argv[])
38 {
39     Solution    testSolution;
40     
41     vector<string>  sample{"eat", "tea", "tan", "ate", "nat", "bat"};
42     
43     vector<vector<string>>  res;
44     
45     res = testSolution.groupAnagrams(sample);
46     
47     for (auto it : res) {
48         for (auto str : it) {
49             cout << str << endl;
50         }
51         cout << endl;
52     }
53     
54     
55     return 0;
56 }
View Code
bat

tan
nat

eat
tea
ate

Program ended with exit code: 0
View Result

 

posted on 2018-01-29 11:26  浩然119  阅读(220)  评论(0编辑  收藏  举报