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添加到结果中即可。

代码:

 class Solution {
struct node{
string str;
int num;
node(string s, int n):str(s),num(n){}
bool operator< (const node& n2) const{
return str < n2.str;
}
};
public:
vector<vector<string>> groupAnagrams(vector<string>& strs) {
vector<node> v;
for (int i = ; i < strs.size(); ++i) {
v.push_back(node(strs[i],i));
}
for (int i = ; i < v.size(); ++i) {
sort(v[i].str.begin(), v[i].str.end());
}
sort(v.begin(), v.end());
vector<vector<string>> result;
vector<string> temp;
temp.push_back(strs[v[].num]);
for (int i = ; i < v.size(); ++i) {
if (v[i].str == v[i - ].str) {
temp.push_back(strs[v[i].num]);
}
else {
result.push_back(temp);
temp.clear();
temp.push_back(strs[v[i].num]);
}
}
result.push_back(temp);
return result;
}
};

最新文章

  1. asp.net 各种路径
  2. [ASP.NET MVC] 使用Bootstrap套件
  3. JavaScript一个经典问题
  4. Generic Netlink详解
  5. vs2010编译lua-5.3.2
  6. 统一入口的Ajax验证
  7. 【MySql】性能优化之分析命令
  8. Python之Tkinter模块学习
  9. datatable的数据转置
  10. ASP.NET MVC 5 学习教程:数据迁移之添加字段
  11. redis远程连接报错记录
  12. Linux(CentOS 7.0)安装Oracle11g R2
  13. Pycharm+Anaconda安装及配置
  14. sql server 主从库设计和数据库镜像设计
  15. websphere设置企业应用使用的jvm最大最小内存
  16. fastAdmin根据状态显示是否显示操作按钮
  17. RSA算法工具
  18. Android-帧布局(FrameLayout)
  19. 支付机构MRC模
  20. [Visual studio code 常见问题解决] ——中文乱码、

热门文章

  1. MYSQL数据库性能调优之五:解决慢查询--存储引擎与数据类型
  2. JS中如何判断null、undefined与NaN
  3. POJ3253Fence Repair(优先队列或单调队列)
  4. wikioi 1083 Cantor表
  5. JavaScript的因为所以
  6. Hadoop on Mac with IntelliJ IDEA - 10 陆喜恒. Hadoop实战(第2版)6.4.1(Shuffle和排序)Map端 内容整理
  7. 广州项目实施步骤III_练习使用Keepalive保证HaProxy的高可用性
  8. 【MongoDB】mongoimport and mongoexport of data (一)
  9. android设置动态壁纸 (Wallpaper) 介绍
  10. Topcomponent --sighoff