49. Group Anagrams

题目:

Given an array of strings, group anagrams together.

For example, given: ["eat", "tea", "tan", "ate", "nat", "bat"]
Return:

[
  ["ate", "eat","tea"],
  ["nat","tan"],
  ["bat"]
]

 

Note: All inputs will be in lower-case.

链接:https://leetcode.com/problems/anagrams/#/description

4/19/2017

37ms, 37%

注意的问题:

1. 第7,8,9行的写法

2. 第19,20行写法

 1 public class Solution {
 2     public List<List<String>> groupAnagrams(String[] strs) {
 3         Map<String, List<String>> m = new HashMap<String, List<String>>();
 4         List<List<String>> ret = new ArrayList<>();
 5         for (int i = 0; i < strs.length; i++) {
 6             String s = strs[i];
 7             char[] ar = s.toCharArray();
 8             Arrays.sort(ar);
 9             String t = String.valueOf(ar);
10             List<String> l;
11             if (m.containsKey(t)) {
12                 l = m.get(t);
13             } else {
14                 l = new ArrayList<String>();
15             }
16             l.add(s);
17             m.put(t, l);
18         }
19         for (Map.Entry<String, List<String>> entry: m.entrySet()) {
20             List<String> value = entry.getValue();
21             ret.add(value);
22         }
23         return ret;
24     }
25 }

更多讨论:https://discuss.leetcode.com/category/57/anagrams

posted @ 2017-04-19 23:56  panini  阅读(166)  评论(0编辑  收藏  举报