字符串 Anagrams
来源:互联网 发布:大数据在零售业的应用 编辑:程序博客网 时间:2024/05/17 09:35
思想:
题意是如果给定串中包含anagram,返回所有的anagram。
什么是anagram?
举个例子:teach和cheat就是一组Anagrams,它们都包含相同的字母a、c、e、h、t。
所以规律就是:如果串a和串b的字典序列相同,则它们就构成一组Anagrams。
用unordered_map,key为字典序列,value为一系列对应的Anagrams。
class Solution {public: vector<string> anagrams(vector<string>& strs) { vector<string> res; unordered_map<string, vector<string>> group; for(const string s : strs) { string key = s; sort(key.begin(),key.end()); group[key].push_back(s); } for(auto i = group.begin(); i != group.end(); i++) { if(i->second.size() > 1) { res.insert(res.end(), i->second.begin(), i->second.end()); } } return res; }};
java code:
public class Solution { public List<List<String>> groupAnagrams(String[] strs) { List<List<String>> res = null; if(strs == null || strs.length == 0) return res; HashMap<String, ArrayList<String>> map = new HashMap<String, ArrayList<String>>(); for(String str : strs) { char[] temp = str.toCharArray(); Arrays.sort(temp); String keyStr = String.valueOf(temp); if(!map.containsKey(keyStr)) { map.put(keyStr, new ArrayList<String>()); } map.get(keyStr).add(str); } //sort every value // for(String key: map.keySet()) {// Collections.sort(map.get(key));// } res = new ArrayList<List<String>>(map.values()); return res; }}
0 0
- 【字符串】Anagrams
- 字符串 Anagrams
- 49:Anagrams【哈希】【字符串】
- leetcode:字符串之Anagrams
- LeetCode练习-字符串-anagrams
- leetcode---anagrams---字符串
- [leetcode] 【字符串】 49. Group Anagrams
- 3.13—字符串—Anagrams
- Anagrams
- Anagrams
- Anagrams
- Anagrams
- Anagrams
- Anagrams
- Anagrams
- Anagrams
- Anagrams
- Anagrams
- Web Service学习笔记
- nyoj 171 聪明的kk
- maven中如何设置编辑级别
- 当前日期加上某个天数为?
- (转)Java并发编程笔记(四)之 Volatile
- 字符串 Anagrams
- 使用angular.bootstrap完成模块的手动加载
- wlanconfig
- Scramble String
- Android 设计的的最佳实践
- How to verify the Playback/Recording on WCD9330 Codec using tinymix commands
- QTextCodec中的setCodecForTr等终于消失了 (Qt5)
- Android动画之:Frame动画
- Android的Activity屏幕切换动画-左右滑动深入与实战