字母分组~

说白了就是把字母一样的分到一组,他们的顺序不一样。问题来了如何找到字母都一样的串呢,很巧妙的一点就是将他们按照字典序排序,如果字母一样的话,他们排序之后就是相同的,就可以加入一组了。还是遍历一遍vector就可以得到结果,复杂度是on的。这里需要将排序后一样的装入同一组,所以还是用哈希表这样定义vector<string,vector<string>>m,将排序后的串为key,value就是字符串数组。

class Solution {
public:
    vector<vector<string>> groupAnagrams(vector<string>& strs) {
         unordered_map<string,vector<string>>m;
         for(string &s:strs)
         {
            string temp=s;
            sort(temp.begin(),temp.end());
            m[temp].push_back(s);
         }//将所有排序相同的字符串都装入同一组
         vector<vector<string>>ans;
         for(auto &it:m)
         {
            ans.push_back(it.second);
         }
         return ans;

    }
};

本题关键在于想到给字符串排序后他们是相同的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值