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

Note: All inputs will be in lower-case.

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

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

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

思路:因为回文构词法的单词之间仅仅是字母改变了顺序,那么我们可以先对单词进行排序,然后我们就可以通过两个单词之间是否相等,来判断是否为回文构词法形成的。那么如何来判断两个单词相等,若是拿某个单词和之前的逐个进行比较,那么时间复杂度就很高了,这里用到map,这样查找起来就方便多了。那查找之后怎么办了?对数组中的每一个字符串:

1)若是在map没有找到,则,将其下标存入,以供后面的对比;

2)若是找到了,先将之前的那个字符串和目前的这个,存入res中。

针对第二种情况,就存在一个问题了,如何避免已存入的再次存入?我们可以将之前存入的那个在map中对应的值改为-1(小于0即可),然后加一定的条件判断(若是不加条件判断,则,改为-1就没有意义了)。参考了doc_sgl代码如下:

 class Solution {
public:
vector<string> anagrams(vector<string> &strs)
{
vector<string> res; unordered_map<string,int> anagram; for(int i=;i<strs.size();++i)
{
string s=strs[i];
sort(s.begin(),s.end()); if(anagram.find(s)==anagram.end())
anagram[s]=i;
else
{
if(anagram[s]>=)
{
res.push_back(strs[anagram[s]]); //存之前
anagram[s]=-;
}
res.push_back(strs[i]); //存现在
}
}
return res;
}
};

[Leetcode] Anagrams 颠倒字母构成词的更多相关文章

  1. Leetcode: Anagrams(颠倒字母而成的字)

    题目 Given an array of strings, return all groups of strings that are anagrams. Note: All inputs will ...

  2. leetcode 有效的字母异位词

    给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的一个字母异位词. 示例 1: 输入: s = "anagram", t = "nagaram" ...

  3. Leetcode题目49.字母异位词分组(中等)

    题目描述: 给定一个字符串数组,将字母异位词组合在一起.字母异位词指字母相同,但排列不同的字符串. 示例: 输入: ["eat", "tea", "t ...

  4. 【LeetCode】49. 字母异位词分组

    49. 字母异位词分组 知识点:字符串:哈希表 题目描述 给你一个字符串数组,请你将 字母异位词 组合在一起.可以按任意顺序返回结果列表. 字母异位词 是由重新排列源单词的字母得到的一个新单词,所有源 ...

  5. leetcode -有效的字母异位词 python&C++

    C++解题代码: class Solutiion { public: bool isAnagram(string s, string t) { ](); int n = s.length(); int ...

  6. LeetCode 49: 字母异位词分组 Group Anagrams

    LeetCode 49: 字母异位词分组 Group Anagrams 题目: 给定一个字符串数组,将字母异位词组合在一起.字母异位词指字母相同,但排列不同的字符串. Given an array o ...

  7. LeetCode 49. 字母异位词分组(Group Anagrams)

    题目描述 给定一个字符串数组,将字母异位词组合在一起.字母异位词指字母相同,但排列不同的字符串. 示例: 输入: ["eat", "tea", "ta ...

  8. [Swift]LeetCode49. 字母异位词分组 | Group Anagrams

    Given an array of strings, group anagrams together. Example: Input: ["eat", "tea" ...

  9. [Swift]LeetCode438. 找到字符串中所有字母异位词 | Find All Anagrams in a String

    Given a string s and a non-empty string p, find all the start indices of p's anagrams in s. Strings ...

随机推荐

  1. scala成长之路(4)compaion object——伴生对象的使用

    虽然java一直声称自己是完全面向对象的语言,但一直以来都被很多人所质疑,其中java的静态成员函数就是主要的“罪魁祸首”.由于java中保留了静态方法的调用,导致其编程模式依然有过程式编程的可能,尤 ...

  2. 5.Python的语言特点

    前言   Python有哪些语言特点?可以列出的特点很多,例如,<Python核心编程>第二版列出了十多条特点.本文的三个特点是笔者学习Python的体会,其他特点有体会之后再写,笔者是这 ...

  3. 腾讯招聘网数据爬取存入mongodb

    #!/user/bin/env python3 # -*- coding: utf-8 -*- import requests from lxml import etree from math imp ...

  4. 对URI的理解

    在了解RESTful api的设计规范的时候,遇到了一个问题,就是uri和url有什关系,有什么区别,所以就在这里记录一下. URI(Uniform Resource Identifier),统一资源 ...

  5. 动态规划(DP)算法

    参考https://blog.csdn.net/libosbo/article/details/80038549 动态规划是求解决策过程最优化的数学方法.利用各个阶段之间的关系,逐个求解,最终求得全局 ...

  6. Angularjs+bootstrap 实现横向滑屏

    本地环境: AngularJS v1.3.2 angular-ui-bootstrap Version: 0.12.0 - 2014-11-16 实现代码:Html部分 <div ng-cont ...

  7. 在WPF中自定义控件(3) CustomControl (下)

    原文:在WPF中自定义控件(3) CustomControl (下)   在WPF中自定义控件(3) CustomControl (下)                                 ...

  8. Leetcode 简略题解 - 共567题

    Leetcode 简略题解 - 共567题     写在开头:我作为一个老实人,一向非常反感骗赞.收智商税两种行为.前几天看到不止两三位用户说自己辛苦写了干货,结果收藏数是点赞数的三倍有余,感觉自己的 ...

  9. jmeter更改启动编码设置

    项目中碰到这样的问题,在eclipse经过utf-8转码的代码,能正常运行,放到了jmeter里面运行,就是乱码,如下: String s = "乔佳飞"; String ss = ...

  10. Mac下用tomcat搭建下载服务器

    1.下载tomcat 去官方网址: http://tomcat.apache.org/ 下载最新版 2.下载解压后,自己可以随便放在哪个文件夹下,自己记得路径即可.比如Users/你的用户名/Docu ...