zoukankan      html  css  js  c++  java
  • 【leetcode】Anagrams

    Anagrams

    Given an array of strings, return all groups of strings that are anagrams.

    Note: All inputs will be in lower-case.

     
     
    Anagrams:即字母个数和字母都相同,但是字母顺序不相同的词
     
    e.g. "tea","and","ate","eat","dan".   return "and","dan","tea","ate","eat"
     
    即找出vector中所有存在Anagrams的词
     
    思路:
    对每一个string中的字符进行重新排序,保存在map中
     
    如果重复找到了某个元素,则说明该词是Anagrams的,把当前元素,和与之匹配的Anagrams元素保存到vector中
     
    注意sort的使用
     
    如果比较的元素可以用<号比较,则无需第三个参数,按照升序排列
    如果比较的元素不可以用<号比较,则需要第三个参数比较函数
    比较函数可以写成下面的形式:
    static bool less_lower(char c1, char c2)
    {
        return c1<c2;
    }
    注意,对于compare函数,两个元素相等时,需要返回false,否则会报错
     
     1 class Solution {
     2 public:
     3     vector<string> anagrams(vector<string> &strs) {          
     4         int n=strs.size();
     5         string s;
     6         map<string ,int> strMap;          
     7         vector<string> result;
     8        
     9         for(int i=0;i<n;i++)
    10         {
    11             s=strs[i];
    12             sort(s.begin(),s.end());
    13             if(strMap.find(s)==strMap.end())
    14             {
    15                 strMap[s]=i;
    16             }
    17             else
    18             {
    19                 if(strMap[s]!=-1)
    20                 {
    21                     result.push_back(strs[strMap[s]]);
    22                     strMap[s]=-1;
    23                 }                  
    24                 result.push_back(strs[i]);                  
    25             }
    26         }
    27         return result;    
    28     }
    29 };
  • 相关阅读:
    预览PDF【reactpdf】插件的使用(二)
    多叉merkletree的实现
    中国优秀的架构师是不是出现了严重断层?
    工程师的思维转变
    QCore/Library说明文档
    QParserGenerator代码分析二(A fix&An example)
    山寨STL实现之list
    山寨STL实现笔记
    山寨STL实现之内存池V2
    词法分析器1(正则表达式到εNFA的转换)
  • 原文地址:https://www.cnblogs.com/reachteam/p/4251634.html
Copyright © 2011-2022 走看看