赞
踩
题目链接:49. 字母异位词分组 - 力扣(LeetCode)
给你一个字符串数组,请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。
字母异位词 是由重新排列源单词的所有字母得到的一个新单词。
题目的意思是将这些单词分类,由相同字母组成的单词分为一类
可以想到的是将所有单词重新排序,相同的划分为一类
用哈希映射,重新排序的单词作为key,value为原本单词的类,用容器来装这一个类的单词
C++实现
- class Solution {
- public:
- vector<vector<string>> groupAnagrams(vector<string>& strs) {
- unordered_map<string,vector<string>>hash;
- for(auto&word:strs){
- string key=word;
- sort(key.begin(),key.end());
- hash[key].push_back(word);
- }
- vector<vector<string>>answer;
- for(auto it=hash.begin();it!=hash.end();it++){
- answer.push_back(it->second);
- }
- return answer;
- }
- };
Rust
- use std::collections::HashMap;
- impl Solution {
- pub fn group_anagrams(strs: Vec<String>) -> Vec<Vec<String>> {
- let mut map=HashMap::new();
- for str in strs{
- let mut key=str.clone().into_bytes();
- key.sort();
- map.entry(key).or_insert(vec![]).push(str);
- }
- map.into_values().collect()
- }
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。