• 49. Group Anagrams (string, HashTable)


    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:

    1. For the return value, each inner list's elements must follow the lexicographic order.
    2. All inputs will be in lower-case.

    思路:

    anagram: 由颠倒字母而成的单词

    anagram是否出现过,可以通过Hashmap,但是由于anagram无关乎字母出现的顺序,所以也可以将字母排序后再比较字符串。

    class Solution {
    public:
        vector<vector<string>> groupAnagrams(vector<string>& strs) {
            if (strs.size() <= 0) return result;
            
            vector<vector<string>> result;
            map<string,int> anagram;
            int resIndex = 0;
            string s;
            
            for (int i = 0; i < strs.size(); ++i)
            {
                s = strs[i];
                sort(s.begin(), s.end()); //anagram无关乎字母顺序,所以将string按字母排序后再比较
                if (anagram.find(s) == anagram.end()) { //如果还没有出现过该anagram
                    vector<string> item;
                    item.push_back(strs[i]);
                    result.push_back(item);
                    anagram.insert(make_pair(s, resIndex++));
                } else {
                    result[anagram[s]].push_back(strs[i]);
                }
            }
            
            //each inner list's elements must follow the lexicographic order
            for(int i = 0; i < result.size(); i++){
                sort(result[i].begin(), result[i].end());
            }
            return result;
        }
    };
  • 相关阅读:
    替换Srun3000解决掉网问题
    了解Equals所发生的事情
    WPF自定义TextBox及ScrollViewer
    自制多类编码转换工具
    .NET4.5之自制多LRC转SRT小工具
    JAVA_list总结
    记一次线程Timer导致的线程安全问题修正
    JAVA_匿名内部类
    JAVA_map总结
    JAVA_闭包
  • 原文地址:https://www.cnblogs.com/qionglouyuyu/p/4854871.html
Copyright © 2020-2023  润新知