[leetcode] Anagrams
来源:互联网 发布:淘宝无线优惠券链接 编辑:程序博客网 时间:2024/06/15 05:12
Given an array of strings, return all groups of strings that are anagrams.
Note: All inputs will be in lower-case.
原文链接:http://www.cnblogs.com/AnnieKim/archive/2013/04/25/3041982.html
思路:
用map<string, int>记录排序后的字符串以及首次出现的位置。
1. 从strs的第一个元素开始遍历,首先对元素进行排序得到s;
2. 在map里查找s;
3. 若不存在,将s以及该元素的下标存入map<string ,int>;
4. 若存在,首先将第一次出现s时的原始字符串存入结果res,即strs[map[s]],并将map[s]设置为-1(防止下次再存),再将该字符串本身存入结果res;
5. 重复以上1-4步,直到遍历结束。
代码:
class Solution {public: vector<string> anagrams(vector<string> &strs) { vector<string> res; if(strs.size()<=1) return res; map<string,int> anagram; for(int i=0;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]>=0){ res.push_back(strs[anagram[s]]); anagram[s]=-1; } res.push_back(strs[i]); } } return res; }};
0 0
- LeetCode: Anagrams
- LeetCode: Anagrams
- LeetCode Anagrams
- Leetcode: Anagrams
- [Leetcode] Anagrams
- LeetCode : Anagrams
- [leetcode] anagrams
- LeetCode Anagrams
- [LeetCode] Anagrams
- [LeetCode]Anagrams
- [leetcode]Anagrams
- leetcode anagrams
- [leetcode] Anagrams
- LeetCode-Anagrams
- LeetCode - Anagrams
- Leetcode: Anagrams
- 【Leetcode】Anagrams
- LeetCode Anagrams
- NTP - UDP 123
- C#文件流操作
- js中几种方法的使用总结
- 2014湘潭邀请赛 C题 湘大OJ 1205 Range (单调栈)
- Gvim常用操作
- [leetcode] Anagrams
- 黑马程序员----反射
- 阿里校招笔试
- Android学习及如何利用android来赚钱
- NYOJ-素数
- C++ primer 第五版 中文版 练习 10.1 个人code
- 4646464646464464564
- linux常用命令
- group by扩展函数的习题(读书笔记)