Anagram(回文构词法),哈希映射
来源:互联网 发布:2016网络最热门话题 编辑:程序博客网 时间:2024/06/06 17:11
本题源自LeetCode点击打开链接
-------------------------------------------------------
思路: 回文即出现的字符串的字符顺序变化构成。
1 用一个map 做映射。map《string,int》
2 将字符串排序,然后放入map,值为 字符串在数组中的下标,保证了顺序
3 如果已经出现过,就将出现过的字符串压入结果。
代码1:
map<string,int> strMap; vector<string> result; int len=strs.size(); if(len==0) return result; for(int i=0;i<len;i++){ string tmp=strs[i]; sort(tmp.begin(),tmp.end()); if(strMap.count(tmp)==0){ strMap[tmp]=i; //存放的是 字符串在数组中的下标。 }else{ if(strMap[tmp]>=0){ //说明出现过 result.push_back(strs[strMap[tmp]]); //先压入之前出现的,保证顺序 strMap[tmp]=-1; } result.push_back(strs[i]); } } return result; }代码2:
vector<string> anagrams(vector<string> &strs) { unordered_map<string,vector<string>> strMap; vector<string> result; int len=strs.size(); if(len==0) return result; for(string key:strs){ string temp=key; //值为字符一样的原字符串 sort(key.begin(),key.end()); //键为排序后的字符串 strMap[key].push_back(temp); } for(auto it=strMap.begin();it!=strMap.end();it++){ if(it->second.size()>1){ result.insert(result.end(),it->second.begin(),it->second.end()); } } return result; }
阅读全文
0 0
- Anagram(回文构词法),哈希映射
- 回文构词法
- LeetCode OJ 之 Anagrams (回文构词法)
- [LeetCode]—Anagrams 回文构词法
- [LeetCode(Q49)] Anagrams (回文构词法)
- GEEK编程练习— —回文构词法
- Anagram --- 哈希算法
- leetCode 49.Anagrams (回文构词法) 解题思路和方法
- 日语语法(九):日语的构词法
- 英语单词构词法
- 英语构词法
- 英语构词法
- poj 1256(Anagram)
- anagram
- Anagram
- Anagram
- Anagram
- LeetCode(242)Valid Anagram
- iOS 富文本~设置字体大小和颜色
- 动态显示隐藏<td>标签或二级菜单
- 全排列递归算法
- Keepalived简介
- Kafka配置参数详解
- Anagram(回文构词法),哈希映射
- C语言(29)阶乘尾数零的个数
- 【Unity】unity3d NavMeshAgent 导航显示路径
- git 项目资料
- js如何获取android手机的电话号码和联系人,并且传递给PHP、Java后台
- linux命令汇
- [tomcat 8.0.47]To prevent a memory leak, the JDBC Driver has been forcibly unregistered
- 判断线程是否释放
- 基于开源项目搭建属于自己的技术堆栈