首页 > 代码库 > LeetCode49 Group Anagrams
LeetCode49 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. (Medium)
分析:
一个简单的思路,就是把每个string赋上其在数组中的位置组成一个结果(保留位置信息)。
然后对每个string排序,再对所有string以字典序排序使得一样的string相邻。
最后走一遍循环, 把一样的string对应的原vector中的string添加到结果中即可。
代码:
1 class Solution { 2 struct node{ 3 string str; 4 int num; 5 node(string s, int n):str(s),num(n){} 6 bool operator< (const node& n2) const{ 7 return str < n2.str; 8 } 9 };10 public:11 vector<vector<string>> groupAnagrams(vector<string>& strs) {12 vector<node> v;13 for (int i = 0; i < strs.size(); ++i) {14 v.push_back(node(strs[i],i));15 }16 for (int i = 0; i < v.size(); ++i) {17 sort(v[i].str.begin(), v[i].str.end());18 }19 sort(v.begin(), v.end());20 vector<vector<string>> result;21 vector<string> temp;22 temp.push_back(strs[v[0].num]);23 for (int i = 1; i < v.size(); ++i) {24 if (v[i].str == v[i - 1].str) {25 temp.push_back(strs[v[i].num]);26 }27 else {28 result.push_back(temp);29 temp.clear();30 temp.push_back(strs[v[i].num]);31 }32 }33 result.push_back(temp);34 return result;35 }36 };
LeetCode49 Group Anagrams
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。