zoukankan      html  css  js  c++  java
  • 49. Group Anagrams

    题目:

    Given an array of strings, group anagrams together.

    (给定一个字符串数组,将他们根据anagram归类)

    样例:

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

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

    思路:
    对于这道题,字符串是否属于同一类,有一个很明显的特征,就是对相同类的字符串而言,单个字符串按照字母顺序排序之后,得到的排序结果是相同的,如eat与tea,排序后得到的结果都是aet。

    基于这样的前提,我们可以建立这样的哈希表:索引值是字符串排序后的结果,而哈希值则为得到这个结果的所有字符串。对于输入的每一个字符串,先排序,然后放到哈希表中,就完成了字符串的归类。
    最后,只需要将哈希表转换为字符串数组组成的vector就可以了。

    代码:
    class Solution {
    public:
        vector<vector<string>> groupAnagrams(vector<string>& strs) {
            map<string,vector<string> > m;
            vector<vector<string>> res;
            for(int i = 0 ; i < strs.size() ;i ++)
            {
                string curr = strs[i];
                string temp = curr;
                sort(temp.begin(),temp.end());
                m[temp].push_back(curr);
            }
            
            for(map<string,vector<string> >::iterator it = m.begin();it!=m.end();it++)
                res.push_back(it->second);
            
            return res;
        }
    };



  • 相关阅读:
    SWPUCTF2019 | 神奇的二维码
    CG-CTF | Hello,RE!
    CG-CTF | I wanna play CTF
    CG-CTF | MD5
    CG-CTF | 综合题2
    CG-CTF | 密码重置2
    CG-CTF | 综合题
    修改input输入框placeholder文字默认颜色
    解决前端浏览器字体小于12px办法
    box-shadow四个边框设置阴影样式
  • 原文地址:https://www.cnblogs.com/MT-ComputerVision/p/6984969.html
Copyright © 2011-2022 走看看