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. 字符编码 ASCII unicode UTF-8

    字符串也是一种数据类型,但是,字符串比较特殊的是还有一个编码问题. 因为计算机只能处理数字,如果要处理文本,就必须先把文本转换为数字才能处理.最早的计算机在设计时采用8个比特(bit)作为一个字节(b ...

  2. js 节点

    var chils= s.childNodes; //得到s的全部子节点 var par=s.parentNode;  //得到s的父节点 var ns=s.nextSbiling;  //获得s的下 ...

  3. python中字典的遍历

    用ipython运行情况如下: #新建字典 In [1]: name_cards = {'name':'sunwukong','QQ':'123124','addr':'秦皇岛'} #生成key对象 ...

  4. Android面试收集录 蓝牙与WiFi

    1.打开手机中的蓝牙功能有哪些方法? 法1:使用Intent  ==>new Intent(BluetoothAdaper.ACTION_REQUEST_ENABLE); startActivi ...

  5. Android——搜索传统蓝牙设备

    一,主布局: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:andro ...

  6. Mysql综合练习作业50题

    #作业库create database db8 charset utf8; #年级表create table class_grade(gid int not null primary key auto ...

  7. Java面试题集合

    1.Java的HashMap是如何工作的? HashMap是一个针对数据结构的键值,每个键都会有相应的值,关键是识别这样的值. HashMap 基于 hashing 原理,我们通过 put ()和 g ...

  8. Django-modelfrom组件

    ModelForm     a.  class Meta:             model,                           # 对应Model的             fi ...

  9. OSI七层模型加协议

    OSI七层网络模型 TCP/IP四层概念模型 对应网络协议 应用层(Application) 应用层 HTTP.TFTP, FTP, NFS, WAIS.SMTP 表示层(Presentation) ...

  10. Epplus下的一个将Excel转换成List的范型帮助类

    因为前一段时间公司做项目的时候,用到了Excel导入和导出,然后自己找了个插件Epplus进行操作,自己将当时的一些代码抽离出来写了一个帮助类. 因为帮助类是在Epplus基础之上写的,项目需要引用E ...