面试题 10.02. 变位词组 力扣(中等) 字符串排序sort(string)

题目描述:

编写一种方法,对字符串数组进行排序,将所有变位词组合在一起。变位词是指字母相同,但排列不同的字符串。

注意:本题相对原题稍作修改

示例:

输入: ["eat", "tea", "tan", "ate", "nat", "bat"],
输出:
[
["ate","eat","tea"],
["nat","tan"],
["bat"]
]

题源:https://leetcode-cn.com/problems/group-anagrams-lcci/

题解:

一个朴素的想法是根据题意进行模拟,对每个字符串进行排序作为 key,从而实现相同的「变位词」对应同一个 key,使用哈希表进行统计即可。

学习要点:

对string类型的字符串排序,可以用sort(string.begin(), string.end() );

代码:

class Solution {
public:
    vector<vector<string>> groupAnagrams(vector<string>& strs) {
    map<string,vector<string>> mp;
    for(auto i : strs)
    {
        string s=i;
        sort(s.begin(),s.end());
        mp[s].push_back(i);
    }
    vector<vector<string>> res;
    for(auto i:mp)
        res.push_back(i.second);
    return res;
    }
};

 

posted on 2021-07-18 17:35  Yxter  阅读(73)  评论(0编辑  收藏  举报

导航