LeetCode OJ Anagrams
来源:互联网 发布:淘宝五线谱乐器专营店 编辑:程序博客网 时间:2024/05/16 12:50
Given an array of strings, return all groups of strings that are anagrams.
Note: All inputs will be in lower-case.
将可以组成anagram的string都放到一个set里,并用一个key对应,比如dog、god、dgo,都可以用dgo对应(这里直接用排序得到key),这样就形成了一个map, 最后遍历map到一个放答案的vector即可。注意单独的元素不插入map中,但是相同的两个元素可以插入,比如传进来的vector中如果有且仅有一个dog,那么答案中没有dog,但是如果有两个dog,答案中应该要有dog。
这是直接用一个排序的string作为key的版本:
class Solution {public: vector<string> anagrams(vector<string> &strs) { map<string, multiset<string> > strM; for (vector<string>::iterator iter = strs.begin(); iter != strs.end(); iter++) { strM[getKey(*iter)].insert(*iter); } vector<string> ans; for (map<string, multiset<string> >::iterator iter = strM.begin(); iter != strM.end(); iter++) { if (iter->second.size() == 1) continue; for (set<string>::iterator iter2 = iter->second.begin(); iter2 != iter->second.end(); iter2++) { ans.push_back(*iter2); } } return ans; } string getKey(string s) { string sortS = s; sort(sortS.begin(), sortS.end()); return sortS; }};这是用一个vector表示字母使用情况的版本:
class Solution {public: vector<string> anagrams(vector<string> &strs) { map<vector<int>, multiset<string> > strM; for (vector<string>::iterator iter = strs.begin(); iter != strs.end(); iter++) { strM[getKey(*iter)].insert(*iter); } vector<string> ans; for (map<vector<int>, multiset<string> >::iterator iter = strM.begin(); iter != strM.end(); iter++) { if (iter->second.size() == 1) continue; for (set<string>::iterator iter2 = iter->second.begin(); iter2 != iter->second.end(); iter2++) { ans.push_back(*iter2); } } return ans; } vector<int> getKey(string s) { vector<int> letterInS; for (int i = 0; i < 26; letterInS.push_back((i++) - i)); for (int i = 0; i < s.size(); i++) { letterInS[s[i] - 'a']++; } return letterInS; }};
0 0
- LeetCode OJ:Anagrams
- LeetCode OJ - Anagrams
- LeetCode OJ Anagrams
- LeetCode OJ:Group Anagrams
- <LeetCode OJ> 49. Group Anagrams
- LeetCode OJ-49.Group Anagrams
- LeetCode OJ算法题(四十八):Anagrams
- LeetCode OJ 之 Anagrams (回文构词法)
- leetcode oj java 49. Group Anagrams
- Leetcode OJ 49. Group Anagrams [Medium]
- leetcode oj java Find All Anagrams in a String
- LeetCode: Anagrams
- LeetCode: Anagrams
- LeetCode Anagrams
- Leetcode: Anagrams
- [Leetcode] Anagrams
- LeetCode : Anagrams
- [leetcode] anagrams
- win8.1系统 右键桌面鼠标变成圆圈反应很慢
- LeetCode OJ Valid Parentheses
- FZU Problem 2183 简单题(字符串处理)
- LeetCode OJ Rotate Image
- 7. tictactoe终于调试完成
- LeetCode OJ Anagrams
- 通过Tooz在python中实现分布式群组和锁管理
- Android学习笔记の九
- 创建pdf模板
- LeetCode OJ N-Queens II
- html5简单游戏编程从零开始
- Rotate Array(旋转队列)
- Linux程序设计(Linux shell编程十三)
- LeetCode OJ N-Queens