「LintCode」java字符串練習四──anagrams
2015-09-17 03:17
477 查看
乱序字符串
给出一个字符串数组S,找到其中所有的乱序字符串(Anagram)。如果一个字符串是乱序字符串,那么他存在一个字母集合相同,但顺序不同的字符串也在S中
样例
对于字符串数组 [“lint”,”intl”,”inlt”,”code”]
返回 [“lint”,”inlt”,”intl”]
注意
所有的字符串都只包含小写字母
我的解決方法
给出一个字符串数组S,找到其中所有的乱序字符串(Anagram)。如果一个字符串是乱序字符串,那么他存在一个字母集合相同,但顺序不同的字符串也在S中
样例
对于字符串数组 [“lint”,”intl”,”inlt”,”code”]
返回 [“lint”,”inlt”,”intl”]
注意
所有的字符串都只包含小写字母
我的解決方法
1.新建一個ArrayList數組,保存待會篩選出來的臨時數據并輸出; 2.遍歷字符串,獲得哈希計數器; 3.把哈希表中數值大於1的value取出來; 代碼 public static List<String> anagrams(String[] strs) { // write your code here ArrayList<String> result = new ArrayList<String>(); //哈希表 Map<String, ArrayList<String>> multimap = new HashMap<String, ArrayList<String>>(); for (String str : strs) { char[] charArray = str.toCharArray(); Arrays.sort(charArray); String strSorted = String.valueOf(charArray); if (!multimap.containsKey(strSorted)) { ArrayList<String> arrayList = new ArrayList<String>(); arrayList.add(str); multimap.put(strSorted, arrayList); } else { ArrayList<String> arrayList = multimap.get(strSorted); arrayList.add(str); multimap.put(strSorted, arrayList); } } // System.out.print(multimap.values()); for (ArrayList<String> tmpArrayList : multimap.values()) { if (tmpArrayList.size() > 1) { result.addAll(tmpArrayList); } } return result; }
相关文章推荐
- 《Java核心技术卷一》笔记 多线程同步(底层实现)
- Java常见知识问答
- 传智Java集合+IO 部分知识测试
- 《java遇到html--servlet篇》2015.09.16笔记
- 远程访问hdfs
- 安卓开发——JNI——回调java中的方法
- Java线程中的ThreadPoolExecutor
- JavaMail
- 解决eclipse“copy项目重命名后重新发布,项目名在地址栏仍然是原来的项目名”的问题
- 关于CXF整合Spring时出现jaxws.xsd无法找到的问题
- Java解析XML文件
- 使用JAVA到处100W级别的EXECL到处
- Spring MVC原理
- Spring数据源C3P0,DBCP
- Java Web实现的基本MVC实例分析
- 主题:java并发编程-Executor框架
- 博客一,常见的几种排序算法的Java实现
- java数据类型转换
- JavaWeb学习篇之----自定义标签&&JSTL标签库详解
- eclipse中使用egit创建分支