问题描述:
Given an array of strings, group anagrams together.
For example, given: ["eat", "tea", "tan", "ate", "nat", "bat"]
,
Return:
[ ["ate", "eat","tea"], ["nat","tan"], ["bat"] ]
-------------------------------------------------------------------------------------------------------------------------------------
思路:将每一个字符串进行排序,作为此字符串的key,所有具有相同key的字符串属于同一类。
解决方案用到了c++11的unordered_map,devc++默认没有开启对C++11的编译支持,需要进行如下配置:
Tools->Compiler Options->program->g++ 更改为: g++.exe -std=c++11
-------------------------------------------------------------------------------------------------------------------------------------
#include
#include
#include
#include
#include
using namespace std; vector
strs; void init() { strs.push_back("eat");strs.push_back("tea");strs.push_back("tan"); strs.push_back("ate");strs.push_back("nat");strs.push_back("bat"); }//测试数据初始化 //算法主程序 vector
> anagrams(vector
&strs) { vector
> ret; //将每个字符串进行排序,作为key, //所有具有相同key的原字符串组成的vector作为value unordered_map
> map; for(int i=0;i
temvec; temvec.insert(temvec.begin(),it->second.begin(),it->second.end()); ret.push_back(temvec); it++; } return ret; } int main() { init(); vector
>ret = anagrams(strs); for(int i=0;i