zoukankan      html  css  js  c++  java
  • [LeetCode 题解]: Anagrams

    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/ 谢谢。

  • 相关阅读:
    Beta冲刺 5
    Beta冲刺 4
    Beta冲刺 3
    Beta冲刺 2
    Beta冲刺 1
    项目评测博客
    Beta冲刺前准备
    Alpha 冲刺11——总结
    Alpha冲刺10
    Alpha冲刺9
  • 原文地址:https://www.cnblogs.com/double-win/p/3782211.html
Copyright © 2011-2022 走看看