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.

    输入一个字符串数组,返回所有回文构词法(anagrams)的字符串,所谓回文构词法就是指一系列单词具有相同的字母,但是字母的顺序不同例如listen和silent。

    方法是首先对每个字符串进行排序,使用map字典,当首次遇到这个排序后字符串A的时候,把A与其下标存入map中。当再次遇到字符串A时,把A的下标的A的原字符串(未经排序)存入vector中,并把map中A的值置为-1,防止重复计算。然后再把这次遇到的字符串的原串存入结果中。

    map中有一个很有用的函数count,他的返回值只有0和1,表示map中是否存在这个key,如果存在返回1,如果不存在则返回0。是一个很好用的函数。

    代码如下:

     1 class Solution {
     2 public:
     3     vector<string> anagrams(vector<string> &strs) {
     4         vector <string> tmp = strs;
     5         map <string, int> dic;
     6         vector<string> res;
     7         for( int i = 0 ; i < tmp.size() ; i++ )
     8         {
     9             sort(tmp[i].begin(), tmp[i].end());
    10             if( dic.count(tmp[i]) == 0 )
    11             {
    12                 dic[tmp[i]] = i;
    13             }
    14             else
    15             {
    16                 if( dic[tmp[i]] != -1 )
    17                 {
    18                     res.push_back(strs[dic[tmp[i]]]);
    19                     dic[tmp[i]] = -1;
    20                 }
    21                 res.push_back(strs[i]);
    22             }
    23         }
    24         return res;
    25     }
    26 };
  • 相关阅读:
    java枚举enum
    冒泡排序、选择排序、插入排序、二分法排序、快速排序、二叉树排序、堆排序总结
    Django-tinymce富文本的使用
    Redis-基本操作总结
    git-总结大全
    css-总结
    html-table布局
    html表单示例
    html总结
    python-浅拷贝、深拷贝实例以及讲解
  • 原文地址:https://www.cnblogs.com/jostree/p/3699891.html
Copyright © 2011-2022 走看看