[Leetcode] Anagrams 颠倒字母构成词
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 颠倒字母构成词的更多相关文章
- Leetcode: Anagrams(颠倒字母而成的字)
题目 Given an array of strings, return all groups of strings that are anagrams. Note: All inputs will ...
- leetcode 有效的字母异位词
给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的一个字母异位词. 示例 1: 输入: s = "anagram", t = "nagaram" ...
- Leetcode题目49.字母异位词分组(中等)
题目描述: 给定一个字符串数组,将字母异位词组合在一起.字母异位词指字母相同,但排列不同的字符串. 示例: 输入: ["eat", "tea", "t ...
- 【LeetCode】49. 字母异位词分组
49. 字母异位词分组 知识点:字符串:哈希表 题目描述 给你一个字符串数组,请你将 字母异位词 组合在一起.可以按任意顺序返回结果列表. 字母异位词 是由重新排列源单词的字母得到的一个新单词,所有源 ...
- leetcode -有效的字母异位词 python&C++
C++解题代码: class Solutiion { public: bool isAnagram(string s, string t) { ](); int n = s.length(); int ...
- LeetCode 49: 字母异位词分组 Group Anagrams
LeetCode 49: 字母异位词分组 Group Anagrams 题目: 给定一个字符串数组,将字母异位词组合在一起.字母异位词指字母相同,但排列不同的字符串. Given an array o ...
- LeetCode 49. 字母异位词分组(Group Anagrams)
题目描述 给定一个字符串数组,将字母异位词组合在一起.字母异位词指字母相同,但排列不同的字符串. 示例: 输入: ["eat", "tea", "ta ...
- [Swift]LeetCode49. 字母异位词分组 | Group Anagrams
Given an array of strings, group anagrams together. Example: Input: ["eat", "tea" ...
- [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 ...
随机推荐
- haystack+Elasticsearch搜素引擎
搜索引擎原理 通过搜索引擎进行数据查询时,搜索引擎并不是直接在数据库中进行查询,而是搜索引擎会对数据库中的数据进行一遍预处理,单独建立起一份索引结构数据. 我们可以将索引结构数据想象成是字典书籍的索引 ...
- 10.1.5 Comment类型【JavaScript高级程序设计第三版】
注释在DOM中是通过Comment 类型来表示的.Comment 节点具有下列特征: nodeType 的值为8: nodeName 的值为"#comment": nodeValu ...
- mysql导出数据库表名与字段信息
一.导出数据库表格信息 #mysql导出库的表格信息 SELECT A.TABLE_SCHEMA, A.TABLE_NAME, A.TABLE_ROWS, A.CREATE_TIME, A.TABLE ...
- WPF中,如何将绑定源设置到单件实例
原文:WPF中,如何将绑定源设置到单件实例 WPF中,如何将绑定源设置到单件实例 周银辉 大概两个月前,曾有位朋友问我:如 ...
- 【转】Ubuntu 14.04下Django+MySQL安装部署全过程
一.简要步骤.(阿里云Ubuntu14.04) Python安装 Django Mysql的安装与配置 记录一下我的部署过程,也方便一些有需要的童鞋,大神勿喷~ 二.Python的安装 由于博主使用的 ...
- P2347 砝码称重
P2347 砝码称重 题目描述 设有1g.2g.3g.5g.10g.20g的砝码各若干枚(其总重<=1000), 输入输出格式 输入格式: 输入方式:a1 a2 a3 a4 a5 a6 (表示1 ...
- 复制MySQL数据库A到另外一个MySQL数据库B(仅仅针对innodb数据库引擎)
方案一:(不用太大的变化my.ini文件) copy 原数据库A中的 数据库(database) ib_logfile1 ib_logfile0 ibdata1: 关闭目的数据库B: 备份 ...
- redis学习资料汇总
redis学习资料汇总 2017年01月07日 22:10:37 阅读数:281 转载:http://blog.csdn.net/wtyvhreal/article/details/50427627 ...
- Flexbox布局模式的理解
个人博客地址: 雨中的鱼-前端知识分享 http://www.showhtml5.cc 分享干货,有兴趣的人可以一起来分享前端知识 加Q群:440279380 Flexbox,一种C ...
- jmeter动态获取jsessionid
思想是在一个线程组内添加一个cookie管理器,登录之后,用正则提取到sessionid,该线程组下的操作便可以共享这个session了. 1. 依次新建线程组.cookie管理器.http请求-登录 ...