49 Anagrams

49 Anagrams

链接:https://leetcode.com/problems/anagrams/

问题描述:

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

Note: All inputs will be in lower-case.

Hide Tags Hash Table String

首先解释题目的意思,给出许多单词,如果单词中的字母都一样,只是顺序不一样,那么它们属于同一组,只有成组的单词需要返回。如果明白了题目的意思那就容易解了。遍历向量,逐个取出元素,对每个string排序,放入map中。

map<value,int>

map中value是排序好的string,int是string在向量中的序号。如果碰到map中已经存在这个key,那么当前string需要返回。还需要判断map[key]是否大于等于0,如果map[key]大于等于0,那么在结果中需要返回str[map[key]],同时更新map[key]=-1。这样是为了防止多次添加同一个string。

class Solution {
    public:
        vector<string> anagrams(vector<string>& strs)
        {
          vector<string>result;
          map<string,int> hm;
          for(int i=0;i<strs.size();i++)
          {
              string s=strs[i];
              sort(s.begin(),s.end());
              if(hm.find(s)==hm.end())
                 hm[s]=i;
              else
              {
               if(hm[s]>=0)
               {
                   result.push_back(strs[hm[s]]);
                   hm[s]=-1;
               }
               result.push_back(strs[i]);
              }
          }
         return result;
        }
    };

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-09 08:31:39

49 Anagrams的相关文章

No.49 Anagrams[易位构词]

No.49 Anagrams Given an array of strings, return all groups of strings that are anagrams. Note: All inputs will be in lower-case. Tags: Hash Table String 难点: 1.没有读清题意,对易位构词的理解不到位 2.题意不明了.输入为一系列字符串,别与回文记混淆了 3.第一次见到,不是很了解,完全没思路 具体分析: 易位构词:两个单词所包含的字符和数量

leetcode 49. Anagrams

Given an array of strings, return all groups of strings that are anagrams. Note: All inputs will be in lower-case. [Solution] FOR ANY string st IN strs, 1) sort st 2) hash st, since st is sorted, all anagrams will be hash to one value. 1 vector<strin

[leedcode 49] Anagrams

Given an array of strings, return all groups of strings that are anagrams. Note: All inputs will be in lower-case. public class Solution { public List<String> anagrams(String[] strs) { //Anagram(回文构词法)是指打乱字母顺序从而得到新的单词,比如 "dormitory" 打乱字母顺

leetCode 49.Anagrams (回文构词法) 解题思路和方法

Anagrams Given an array of strings, return all groups of strings that are anagrams. Note: All inputs will be in lower-case. 思路:这题要是解,必须知道什么是回文构词法.所谓回文构词法就是把一个单词的顺序调整,形成新的单词,如"eat","tea"就是回文构词法. 所以回文构词法一定是相同的字母不同的顺序,而且最少有两个单词. 本题是将单词排序之

LeetCode All in One 题目汇总

228 Summary Ranges 21.10% Easy 227 Basic Calculator II 18.00% Medium 226 Invert Binary Tree 35.40% Easy 225 Implement Stack using Queues 29.60% Medium 224 Basic Calculator 15.80% Medium 223 Rectangle Area 25.60% Easy 222 Count Complete Tree Nodes 19.

Leetcode 题目列表(难度、出现频率、知识点)

不全,但好像没看到有更好的版本,刷前132题暂时凑合着用吧! 转载自:LeetCode Question Difficulty Distribution               1 Two Sum 2 5 array sort         set Two Pointers 2 Add Two Numbers 3 4 linked list Two Pointers           Math 3 Longest Substring Without Repeating Character

【转载】非常棒的算法面试类资源汇总

今天看到了这篇文章,非常非常棒:http://blog.csdn.net/nedushy123/article/details/23827361 把内容转载如下,以作收藏: 经典算法面试题一览 1. 自然就是careercup (类似的网站还有glassdoor) careercup不难,参考二爷划的重点,早早开始做,即使先开始做前几章简单的.一亩三分地经常有刷题活动. Cracking the Coding Interview v5  8.9/88     2. leetcode的题稍难一些,

leetcode&amp;编程之美——博文目录

leetcode刷题整理: 1——Two Sum(哈希表hashtable,map) 2——Add Two Numbers(链表) 3——Longest Substring Without Repeating Characters(set,哈希表,两个指针) 9——Palindrome Number (数学问题) 11——Container With Most Water(两个指针) 12——Integer to Roman(string,数学问题) 13——Roman to Integer(s

LeetCode 刷题顺序表

Id Question Difficulty Frequency Data Structures Algorithms 1 Two Sum 2 5 array + set sort + two pointers 2 Add Two Numbers 3 4 linked list two pointers + math 3 Longest Substring Without Repeating Characters 3 2 string + hashtable two pointers 4 Med