• LeetCode49 Group Anagrams


    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. (Medium)

    分析:

    一个简单的思路,就是把每个string赋上其在数组中的位置组成一个结果(保留位置信息)。

    然后对每个string排序,再对所有string以字典序排序使得一样的string相邻。

    最后走一遍循环, 把一样的string对应的原vector中的string添加到结果中即可。

    代码:

     1 class Solution {
     2 struct node{
     3     string str;
     4     int num;
     5     node(string s, int n):str(s),num(n){}
     6     bool operator< (const node& n2) const{
     7         return str < n2.str;
     8     }
     9 };
    10 public:
    11     vector<vector<string>> groupAnagrams(vector<string>& strs) {
    12         vector<node> v;
    13         for (int i = 0; i < strs.size(); ++i) {
    14             v.push_back(node(strs[i],i));
    15         }
    16         for (int i = 0; i < v.size(); ++i) {
    17             sort(v[i].str.begin(), v[i].str.end());
    18         }
    19         sort(v.begin(), v.end());
    20         vector<vector<string>> result;
    21         vector<string> temp;
    22         temp.push_back(strs[v[0].num]);
    23         for (int i = 1; i < v.size(); ++i) {
    24             if (v[i].str == v[i - 1].str) {
    25                 temp.push_back(strs[v[i].num]);
    26             }
    27             else {
    28                 result.push_back(temp);
    29                 temp.clear();
    30                 temp.push_back(strs[v[i].num]);
    31             }
    32         }
    33         result.push_back(temp);
    34         return result;
    35     }
    36 };
  • 相关阅读:
    POJ 1797 Heavy Transportation
    POJ 2253 Frogger
    POJ 2387 Til the Cows Come Home
    HDU 1233 还是畅通工程
    POJ 1287 Networking
    标准C程序设计七---63
    标准C程序设计七---62
    标准C程序设计七---61
    标准C程序设计七---60
    标准C程序设计七---57
  • 原文地址:https://www.cnblogs.com/wangxiaobao/p/5843986.html
Copyright © 2020-2023  润新知