leetcode 49. Group Anagrams

来源:互联网 发布:java base64 编辑:程序博客网 时间:2024/05/22 14:15
//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.import java.util.ArrayList;import java.util.Arrays;import java.util.HashMap;import java.util.List;public class Solution {public static List<List<String>> groupAnagrams(String[] strs) {        List<List<String>> result = new ArrayList<List<String>>();        if(strs.length == 0){        return result;        }        HashMap<String,List<String>> map = new HashMap<String,List<String>>();//由字符串和对应的List<String>组成的哈希映射        for(int i = 0;i<strs.length;i++){        String str = strs[i];//将strs中的字符串按照字母阿斯克码顺序排序,如:afd-->adf        char[] temp = str.toCharArray();        Arrays.sort(temp);        String sortedStr = String.valueOf(temp);        if(!map.keySet().contains(sortedStr)){//检查哈希表中是否包含以这个字符串为key的List        map.put(sortedStr, new ArrayList<String>());//若没有,则将此字符串为key,创建对应的List        }        map.get(sortedStr).add(str);//将这个原字符串存入对应key的List中        }        for(String str:map.keySet()){//将哈希表中所有的List添加到result中        result.add(map.get(str));        }        return result;    }public static void main(String[] args) {String[] input = {"eat", "tea", "tan", "ate", "nat", "bat"};List<List<String>> result = groupAnagrams(input);System.out.println(result);}    }

0 0
原创粉丝点击