LeetCode OJ-49.Group Anagrams
来源:互联网 发布:汕头有淘宝代运营 编辑:程序博客网 时间:2024/05/22 16:07
LeetCode OJ-49.Group Anagrams
题目描述
Given an array of strings, group anagrams together.
For example, given:
["eat", "tea", "tan", "ate", "nat", "bat"]
,
Return:
[ ["ate", "eat","tea"], ["nat","tan"], ["bat"]]
Note: All inputs will be in lower-case.
Subscribe to see which companies asked this question
题目理解
题目要求将给定的多个字符串中的同字母异序词分组(字母完全相同,只是出现顺序不同),没有太好的办法,暴力求解也是可以过的。先要找出同字母异序词,找出来的关键在于排序后,它们的字母完全相同,以排序后的字符串为key值,所在的组为value值,使用map进行归类就好了。这题主要考察STL中的vector以及map使用是否熟悉了。
注意,在map中查找是否具有相应key时,不能使用std::find,std::find仅支持对迭代器解引用之后是与find的value参数类型相同的情况,对map的迭代器解引用之后,得到的是pair类型,与find传入的value不同类型,不能操作。这里可以使用map实现的find进行操作。
Code
vector<vector<string>> group_anagrams(vector<string> &strs){ vector<vector<string>> res; map<string, vector<string>> groups; vector<string> tmp; string str; int i; for (i = 0; i < strs.size(); ++i) { str = strs[i]; sort(str.begin(), str.end()); if (groups.find(str) == groups.end()) { tmp.push_back(strs[i]); groups[str] = tmp; tmp.clear(); //一定要清空,每次添加分组时,初始分组应该是空的 } else { groups[str].push_back(strs[i]); } } map<string, vector<string>>::iterator iter; for (iter = groups.begin(); iter != groups.end(); ++iter) { res.push_back((*iter).second); } return res;}
0 0
- <LeetCode OJ> 49. Group Anagrams
- LeetCode OJ-49.Group Anagrams
- LeetCode OJ:Group Anagrams
- leetcode oj java 49. Group Anagrams
- Leetcode OJ 49. Group Anagrams [Medium]
- [leetcode] 49.Group Anagrams
- LeetCode 49. Group Anagrams
- [LeetCode]49. Group Anagrams
- leetcode 49. Group Anagrams
- 49. Group Anagrams LeetCode
- 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
- 希表之bkdrhash算法解析及扩展
- jvm有两种执行方式
- MySQL
- 【蓝桥杯】试题集入门训练第二题
- python学习-3.一些常用模块用法
- LeetCode OJ-49.Group Anagrams
- Effective Java : 方法
- 抓包工具Fiddler的使用教程(五): 修改response的数据
- Android 滑动
- 77. Combinations 难度:medium
- JIT与JVM的三种执行模式:解释模式、编译模式、混合模式
- Fedora 25U盘启动盘的制作
- windows10安装Scrapy
- 我最近用Python写了一个算法,不需要写任何规则就能自动识别一个网页的内容