LeetCode: Anagrams
来源:互联网 发布:linux查看阵列卡型号 编辑:程序博客网 时间:2024/05/21 18:46
问题:
Given an array of strings, return all groups of strings that are anagrams.
Note: All inputs will be in lower-case.
分析:1.可使用map作为容器。
2.将字符串按字母顺序进排序后作为map的key,将具有相同key的字符串的集合作为map的value。
3.统计value集合不小于1的添加到结果数据集中。
示例代码:
class Solution { public: //将字符串按照字母顺序进排序,并返回排序后的新字符串(不改变原来字符串) string sort(string str) { std::sort(str.begin(), str.end()); return str; } vector<string> anagrams(vector<string> &strs) { vector<string> result;//结果数据集 //如果给定的集合中字符串个数小于2则直接返回 if (strs.size() < 2) { return result; } //用于排序过程的map集合,key为按字母顺序排列的字符串,value为字符串在原来vector中的位置 map<string, vector<int>> anagramsMap; string key; string value; int size = strs.size(); for (int i = 0; i < size; i++) { value = strs[i]; key = sort(value); //如果map中不存在给定的key,则新添加一个pair if (anagramsMap.find(key) == anagramsMap.end()) { vector<int> anagrams(1, i); anagramsMap.insert(std::make_pair(key, anagrams)); } //否则,在key对应的value中添加字符串所在位置 else { anagramsMap[key].push_back(i); } } //遍历map将value集合大于1的都放到result结果数据集中 for (map<string, vector<int>>::iterator iter = anagramsMap.begin(); iter != anagramsMap.end(); iter++) { vector<int> anagrams = iter->second; int size = anagrams.size(); if (size > 1) { for (int i = 0; i < size; i++) { result.push_back(strs[anagrams[i]]); } } } return result; }};
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
- select的option异常的总结
- 无领导小组讨论中常见的派别
- hdu 1728 逃离迷宫
- 【算法】【分治】两个排序数组的中位数
- poj 1742 Coins 多重背包变形
- LeetCode: Anagrams
- 字符编码过滤器 Servlet Filter
- C Tips
- 快乐的早起者
- try redis (五) -- master -slave 主从复制
- MyEclipse JSP报 Unhandled event loop exception No more handles
- 《A beautiful Mind》Abstract
- jQuery uploadify3.2版本使用教程01
- delphi写的九九乘法表