本文主要是介绍leetcode-49. Group Anagrams,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
leetcode-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”]
]
这题本身并没有什么特别灵巧的算法。但是这里需要说明一下。java里面hash算法如果自己没有重写hash的话,基本上是根据对象来分的,就算是内容一样不是同一个对象也会有不同的hash值。但是String之类的是除外的,因为String实际上在hashmap里有一套专门的散列方式。因为按照常规的散列方式安全性太低了。
public class Solution {public List<List<String>> groupAnagrams(String[] strs) {HashMap<String,List<String>> map = new HashMap<String,List<String>>();for(String os: strs){char[] s = os.toCharArray();Arrays.sort(s);String k = new String(s);if(map.containsKey(k)){map.get(k).add(os);}else{List<String> t = new ArrayList<String>();t.add(os);map.put(k,t);}}List<List<String>> ret = new ArrayList<List<String>>();for(String key : map.keySet()){ret.add(map.get(key));}return ret;}
}
这篇关于leetcode-49. Group Anagrams的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!