Anagrams

Given an array of strings, return all groups of strings that are anagrams. All inputs will be in lower-case

Example

Given ["lint", "intl", "inlt", "code"], return ["lint", "inlt", "intl"].

Given ["ab", "ba", "cd", "dc", "e"], return ["ab", "ba", "cd", "dc"].

 1 public class Solution {
 2     /**
 3      * @param strs: A list of strings
 4      * @return: A list of strings
 5      */
 6     public List<String> anagrams(String[] strs) {
 7         List<String> result = new ArrayList<>();
 8         if (strs == null || strs.length == 0) {
 9             return result;
10         } 
11         HashMap<String, ArrayList<String>> map = new HashMap<>();
12         for (String str : strs) {
13             char[] ch = str.toCharArray();
14             Arrays.sort(ch);
15             String s = new String(ch);
16             if (!map.containsKey(s)) {
17                 map.put(s, new ArrayList<String>());
18             }
19             map.get(s).add(str);
20         }
21         
22         for (ArrayList<String> list : map.values()) {
23             if (list.size() > 1) {
24                 result.addAll(list);
25             }
26         }
27         return result;
28     }
29 }

 

posted @ 2016-06-03 14:39  YuriFLAG  阅读(128)  评论(0)    收藏  举报