LeetCode算法题之Anagrams
来源:互联网 发布:java数据源配置 编辑:程序博客网 时间:2024/06/15 20:51
问题描述:
Given an array of strings, return all groups of strings that are
anagrams. Note: All inputs will be in lower-case.
Anagrams指的是具有如下特性的两个单词:在这两个单词当中,每一个英文字母(不区分大小写)所出现的次数都是相同的。
例如,“Unclear”和“Nuclear”、“Rimon”和“MinOR”都是Anagrams。编写一个程序,输入两个单词,然后判断一下,这两个单词是否是Anagrams。每一个单词的长度不会超过80个字符,而且是大小写无关的。
本题中输入的字符串都是小写的,而且此题返回值要求是vector所以只能有一组anagrams。
解题思路:
先将所有的单词按英文字母顺序排序,设置一个map,排列后的单词作为map的key,值是vector类型,存放的刚好是互为anagrams的若干单词。
class Solution{public: vector<string> anagrams(vector<string> &strs) { vector<string> result; map<string, vector<string> > countMap; if(strs.empty()) return result; if(strs.size() == 1) return result; vector<string> strs_duplication; strs_duplication = strs; for(size_t i=0; i<strs_duplication.size(); i++) { string tempString = strs_duplication[i]; //此处是大小写转换,针对本题可忽略 for(unsigned int j=0; j<tempString.length(); j++) { if(tempString[j]>=65&&tempString[j]<=90) tempString[j]=(char)(tempString[j]+32); } //使用sort函数排序 char* s; const int len = tempString.length(); s =new char[len+1]; strcpy(s,tempString.c_str()); sort(s,s+tempString.length()); countMap[s].push_back(tempString); } for(map<string, vector<string> >::iterator iter = countMap.begin(); iter != countMap.end(); iter++) { if ((iter->second).size() > 1) { for(unsigned int i = 0; i < (iter->second).size(); i++) result.push_back((iter->second)[i]); } } return result; }};
0 0
- LeetCode算法题之Anagrams
- LeetCode OJ算法题(四十八):Anagrams
- leetcode 刷题之路 22 Anagrams
- LeetCode第49题之 Group Anagrams
- leetcode之Anagrams
- LeetCode之Anagrams
- leetcode:字符串之Anagrams
- LeetCode算法题目:Group Anagrams
- 每日算法之三十八:Anagrams
- [LeetCode]49. Group Anagrams &&哈希算法
- [leetcode刷题系列]Anagrams
- Leetcode刷题笔录 Anagrams
- LeetCode OJ 之 Anagrams (回文构词法)
- leetcode之路049 Group Anagrams
- LeetCode进阶之路(Group Anagrams)
- LeetCode: Anagrams
- LeetCode: Anagrams
- LeetCode Anagrams
- 函数
- 题目1088:剩下的树
- RESTful Web Services那点事
- 2015-03-31-C#@里 2个双引号表示一个双引号
- Runtime.getRuntime().exec(...)使用方法
- LeetCode算法题之Anagrams
- 关于JAVA的网络功能的略说
- 能力成长模型
- 小技巧:Parallels Desktop 的中统一mac和Linux 虚拟机的拷贝粘贴为 cmd+c cmd+v
- 蓝桥杯历届试题之振兴中华
- 输入一个整数,然后逆序输出
- from c to c++: using the boolean
- leetcode-6 ZigZag Conversion
- 二叉排序树