题目描述:给定一个字符串数组,将变位词排在相邻的位置
思路:
map即可
这里发现一个问题,string用sort排序不能使引用,回头看看源码。
1 #include <iostream> 2 #include <queue> 3 #include <climits> 4 #include <algorithm> 5 #include <memory.h> 6 #include <stdio.h> 7 #include <map> 8 using namespace std; 9 10 class strCmp 11 { 12 public: 13 bool operator()(string s1,string s2) 14 { 15 sort(s1.begin(),s1.end(),less<char>()); 16 sort(s2.begin(),s2.end(),less<char>()); 17 return (s1 == s2); 18 } 19 }; 20 21 22 int main() 23 { 24 vector<string> input; 25 input.push_back("abc"); 26 input.push_back("cba"); 27 input.push_back("aaa"); 28 29 strCmp sc; 30 sort(input.begin(),input.end(),sc); 31 32 map<string,vector<string> > res; 33 vector<string>::iterator ite = input.begin(); 34 while(ite != input.end()) 35 { 36 string stmp = *ite; 37 sort(stmp.begin(),stmp.end()); 38 if(res.find(stmp) != res.end()) 39 { 40 res[stmp].push_back(*ite); 41 } 42 else 43 { 44 vector<string> tmp; 45 tmp.push_back(*ite); 46 res.insert(make_pair(stmp,tmp)); 47 } 48 ++ite; 49 } 50 return 0; 51 }