[LeetCode]49. Group Anagrams

来源:互联网 发布:手机制作软件视频教程 编辑:程序博客网 时间:2024/05/01 22:54

Problem Description

Given an array of strings, group anagrams together.

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

[
[“ate”, “eat”,”tea”],
[“nat”,”tan”],
[“bat”]
]
[https://leetcode.com/problems/anagrams/]

思路

把每个字符串都按字典序排序,作为hash值。

Code

package q049;import java.util.*;public class Solution {    public List<List<String>> groupAnagrams(String[] strs) {        List<List<String>> ans = new ArrayList<List<String>>();        Map<String, List<String>> map = new HashMap<String, List<String>>();        if (strs.length < 1)            return null;        Arrays.sort(strs);        String s = "";        for (int i = 0; i < strs.length; i++) {            s = strs[i];            String key = helper(s);            if (!map.containsKey(key)) {                map.put(key, new ArrayList<String>());            }            map.get(key).add(s);        }        ans = new ArrayList<List<String>>(map.values());        return ans;    }    public String helper(String s) {        char[] a = s.toCharArray();        Arrays.sort(a);        return String.valueOf(a);    }    //    // public static void main(String[] args) {    // Solution s = new Solution();    // String[] a = { "asd" };    // s.groupAnagrams(a);    // }}
0 0
原创粉丝点击