Anagrams
2014-03-03 14:25
253 查看
题目原型:
Given an array of strings, return all groups of strings that are anagrams.
Note: All inputs will be in lower-case.
基本思路:
题目的意思就是说,给你一个字符串数组,让你找出里面的字母一样,但排列不同的元素,如:ate,tea,eat等等。我们可以把那些元素先排序,然后用hashMap存放。
1. 从strs的第一个元素开始遍历,首先对元素进行排序得到strtmp字符串素组;
2. 在map里查找strtmp中的元素;
3. 若不存在,将此元素以及该元素的下标存入map<string ,int>;
4. 若存在,首先将第一次出现s时的原始字符串存入结果res,即strs[map.get(i)],并将map中相应的value设置为-1(防止下次再存),再将该字符串本身存入结果res;
5. 重复以上1-4步,直到遍历结束。
Given an array of strings, return all groups of strings that are anagrams.
Note: All inputs will be in lower-case.
基本思路:
题目的意思就是说,给你一个字符串数组,让你找出里面的字母一样,但排列不同的元素,如:ate,tea,eat等等。我们可以把那些元素先排序,然后用hashMap存放。
1. 从strs的第一个元素开始遍历,首先对元素进行排序得到strtmp字符串素组;
2. 在map里查找strtmp中的元素;
3. 若不存在,将此元素以及该元素的下标存入map<string ,int>;
4. 若存在,首先将第一次出现s时的原始字符串存入结果res,即strs[map.get(i)],并将map中相应的value设置为-1(防止下次再存),再将该字符串本身存入结果res;
5. 重复以上1-4步,直到遍历结束。
public ArrayList<String> anagrams(String[] strs) { ArrayList<String> rs = new ArrayList<String>(); Map<String , Integer> map = new HashMap<String, Integer>(); String[] strtmp = new String[strs.length]; for(int i = 0;i<strs.length;i++) { strtmp[i] = sort(strs[i]); } for(int i = 0;i<strtmp.length;i++) { if(map.containsKey(strtmp[i])) { rs.add(strs[i]); if(map.get(strtmp[i])!=-1) { rs.add(strs[map.get(strtmp[i])]); map.put(strtmp[i], -1); } } else map.put(strtmp[i], i); } return rs; } //按字母顺序排序 public String sort(String str) { char[] ch = str.toCharArray(); for(int i = 0;i<ch.length;i++) { for(int j = 0;j<ch.length-i-1;j++) { if(ch[j]>ch[j+1]) { char tmp = ch[j]; ch[j] = ch[j+1]; ch[j+1] = tmp; } } } return new String(ch); }
相关文章推荐
- ffmpeg在Android4.0下avi类型与yuv类型文件相互转化
- How to search jar whose name with - in eclipse?
- 开始学习Cocoa Touch
- Vagrant入门[转]
- Study plan for automation test framework
- Twitter Bootstrap 中文帮助文档/中文手册/中文教程(转载)
- Linux下查找连接了mysql的进程
- 文件查找命令之find
- LIS的O(nLogN)算法
- dilicms后台post原理
- WordPress插件/文章编辑插件s说明
- webApp添加到iOS桌面
- android 体系结构
- 软件测试模型综述
- oracle while的用法示例分享
- 九度1470:调整方阵
- Oracle AWR报表基本知识
- Oracle常出现的问题
- 实用技巧:如何用 CSS 做到完全垂直居中
- nil, Nil, NULL和NSNull的区别