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.

    http://www.cnblogs.com/easonliu/p/3643595.html

    这题先得知道啥叫Anagrams,知道后其实很简单。

    首先简单介绍一下Anagram(回文构词法)。Anagrams是指由颠倒字母顺序组成的单词,比如“dormitory”颠倒字母顺序会变成“dirty room”,“tea”会变成“eat”。

    回文构词法有一个特点:单词里的字母的种类和数目没有改变,只是改变了字母的排列顺序。

    For example:

    Input:  ["tea","and","ate","eat","den"]

    Output:   ["tea","ate","eat"]

    思路:先对每一个字符串排序,然后hash统计个数,对于hash大于1的表示存在Anagrams,

    class Solution {
        public:
            vector<string> anagrams(vector<string> &strs)
            {
                size_t n = strs.size();
                map<string, int> hash;
                vector<string> res;
    
                string str;
        
                for(int i = 0; i < n; i++)
                {   
                    str = strs[i];
                    sort(str.begin(), str.end());
                    if(hash.count(str) == 0)
                        hash[str] = 1;
                    else
                        hash[str] ++; 
                }   
    
                for(int i = 0; i < n; i++)
                {   
                    str = strs[i];
                    sort(str.begin(), str.end());
                    if(hash[str] > 1)
                        res.push_back(strs[i]);
                }   
        
                return res;
    
            }   
    };
  • 相关阅读:
    GCC编绎详解
    GUN C/C++ __attribute__ 用法 转
    rust 参考的资料 转
    Eclipse环境安装rust
    GNU Debugger for Windows----GDB
    minGW cygwin gnuwin32
    tdm-gcc
    GNU tools
    The MinGW and mingw-w64 projects.----GCC
    crosstool-NG
  • 原文地址:https://www.cnblogs.com/diegodu/p/4313205.html
Copyright © 2011-2022 走看看