标签:style class blog code java http
Given an array of strings, return all groups of strings that are anagrams.
Note: All inputs will be in lower-case.
题解: 判断字符串是否为回文构词法生成的。找出所有由同一回文构词法生成的字符串对。
使用map用于散列。 将strs中的字符串strs[i],在串内进行字典排序,生成key,原始s[i]不变。 将该字符串s[i]映射到key所对应位置。map[key].push_back(str[i]).
依次对字符串数组进行散列。
最后遍历map, 按照字典序将key挂载字符串大于1的位置元素输出到结果vector中。
1 class Solution { 2 public: 3 vector<string> anagrams(vector<string> &strs) { 4 int i; 5 map<string, vector<string> > vset; 6 for(i=0;i<strs.size();i++) 7 { 8 string key = strs[i]; 9 sort(key.begin(),key.end()); 10 vset[key].push_back(strs[i]); 11 } 12 vector<string> result; 13 map<string, vector<string> >::iterator iter; 14 for(iter = vset.begin();iter!=vset.end(); iter++) 15 { 16 if(iter->second.size()>1) 17 { 18 vector<string>::iterator viter; 19 for(viter=iter->second.begin(); viter!=iter->second.end();viter++) 20 result.push_back(*viter); 21 } 22 } 23 return result; 24 } 25 };
转载请注明出处: http://www.cnblogs.com/double-win/ 谢谢。
LeetCode: Anagrams 题解,布布扣,bubuko.com
标签:style class blog code java http
原文地址:http://www.cnblogs.com/double-win/p/3782211.html