LeetCode-49-Group Anagrams(哈希)-Medium
来源:互联网 发布:逐点圆弧插补算法 编辑:程序博客网 时间:2024/05/19 20:56
题意理解:
将给定字符串分组,要求同一组的字符串由相同字符组成,最终,将各组字符串按字典序输出;
题目分析:
1. 将字符串先进行排序,然后通过字符串比较来判定是否为同一组;
2. 将分组后的字符串集合再进行排序,从而满足题目的字典序要求;
3. 在分组的过程中需要进行查找,本题中使用了hash的思想,但C++的STL中没有hash容器,解题代码中使用map来完成hash功能(map由红黑数实现,效率比很实的hash_map效率低);
解题代码:
class Solution {public: vector<vector<string>> groupAnagrams(vector<string>& strs) { vector<vector<string>> ans; int size=strs.size(); if(size<=0){ return ans; } map<string, vector<string>> hashMap; for(int i=0; i<size; i++){ string s=strs[i]; string t=s; sort(t.begin(), t.end()); map<string, vector<string>>::iterator iter=hashMap.find(t); if(iter==hashMap.end()){ vector<string> tV; tV.push_back(s); hashMap.insert(pair<string, vector<string>>(t, tV)); }else{ (iter->second).push_back(s); } } for(map<string, vector<string>>::iterator iter=hashMap.begin(); iter!=hashMap.end(); ++iter){ vector<string> tV(iter->second); sort(tV.begin(), tV.end()); ans.push_back(tV); } return ans; }};
0 0
- LeetCode-49-Group Anagrams(哈希)-Medium
- Medium 49题 Group Anagrams
- [Leetcode 49, medium] Anagrams
- Leetcode 49. Group Anagrams (Medium) (cpp)
- Leetcode OJ 49. Group Anagrams [Medium]
- leetcode---Group Anagrams---哈希
- Leetcode#49||Group Anagrams
- leetcode 49:Group Anagrams
- Leetcode 49: Group Anagrams
- 【leetcode】【49】Group Anagrams
- LeetCode 49 - Group Anagrams
- LeetCode 49 Group Anagrams
- leetcode(49):Group Anagrams
- Leetcode 49 Group Anagrams
- Leetcode-49Group Anagrams
- [Leetcode] #49 Group Anagrams
- LeetCode 49 Group Anagrams
- LeetCode-49:Group Anagrams
- unity3d--动态加载资源和查找资源的方式(1)
- Thread----ExecutorService
- grunt[mismatched:define]
- springmvc(五)springmvc和mybatis整合
- 2014年终总结
- LeetCode-49-Group Anagrams(哈希)-Medium
- 共享锁(S锁)和排它锁(X锁)
- ROS naviagtion analysis: costmap_2d--Layer
- IOS之UIWebView的使用
- iOS沙盒机制(sandBox)
- oracle数据库自动启动关闭
- 【Unity Shader】unity海边波浪效果的实现
- java中字符串的截取
- 2014年11月4日星期二(DEMO10-1,3D裁剪)