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. haystack+Elasticsearch搜素引擎

    搜索引擎原理 通过搜索引擎进行数据查询时,搜索引擎并不是直接在数据库中进行查询,而是搜索引擎会对数据库中的数据进行一遍预处理,单独建立起一份索引结构数据. 我们可以将索引结构数据想象成是字典书籍的索引 ...

  2. 10.1.5 Comment类型【JavaScript高级程序设计第三版】

    注释在DOM中是通过Comment 类型来表示的.Comment 节点具有下列特征: nodeType 的值为8: nodeName 的值为"#comment": nodeValu ...

  3. mysql导出数据库表名与字段信息

    一.导出数据库表格信息 #mysql导出库的表格信息 SELECT A.TABLE_SCHEMA, A.TABLE_NAME, A.TABLE_ROWS, A.CREATE_TIME, A.TABLE ...

  4. WPF中,如何将绑定源设置到单件实例

    原文:WPF中,如何将绑定源设置到单件实例  WPF中,如何将绑定源设置到单件实例                                       周银辉 大概两个月前,曾有位朋友问我:如 ...

  5. 【转】Ubuntu 14.04下Django+MySQL安装部署全过程

    一.简要步骤.(阿里云Ubuntu14.04) Python安装 Django Mysql的安装与配置 记录一下我的部署过程,也方便一些有需要的童鞋,大神勿喷~ 二.Python的安装 由于博主使用的 ...

  6. P2347 砝码称重

    P2347 砝码称重 题目描述 设有1g.2g.3g.5g.10g.20g的砝码各若干枚(其总重<=1000), 输入输出格式 输入格式: 输入方式:a1 a2 a3 a4 a5 a6 (表示1 ...

  7. 复制MySQL数据库A到另外一个MySQL数据库B(仅仅针对innodb数据库引擎)

    方案一:(不用太大的变化my.ini文件) copy 原数据库A中的   数据库(database)  ib_logfile1  ib_logfile0   ibdata1: 关闭目的数据库B: 备份 ...

  8. redis学习资料汇总

    redis学习资料汇总 2017年01月07日 22:10:37 阅读数:281 转载:http://blog.csdn.net/wtyvhreal/article/details/50427627 ...

  9. Flexbox布局模式的理解

    个人博客地址:  雨中的鱼-前端知识分享   http://www.showhtml5.cc    分享干货,有兴趣的人可以一起来分享前端知识  加Q群:440279380   Flexbox,一种C ...

  10. jmeter动态获取jsessionid

    思想是在一个线程组内添加一个cookie管理器,登录之后,用正则提取到sessionid,该线程组下的操作便可以共享这个session了. 1. 依次新建线程组.cookie管理器.http请求-登录 ...