49. Group Anagrams
来源:互联网 发布:a星寻路算法介绍 编辑:程序博客网 时间:2024/05/01 18:30
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.
Hashmap解题,key 的选择是关键,这里的 key 采用 Arrays.sort(string.toCharArray()) 的思路。代码如下:public class Solution { public List<List<String>> groupAnagrams(String[] strs) { HashMap<String, List<String>> hs = new HashMap<String, List<String>>(); for (String str: strs) { char[] chs = str.toCharArray(); Arrays.sort(chs); String tempStr = new String(chs); if (!hs.containsKey(tempStr)) { hs.put(tempStr, new ArrayList<String>()); } hs.get(tempStr).add(str); } return new ArrayList<List<String>>(hs.values()); }}另一种方案,用素数的乘积来作为key,但是如果溢出就失败了。代码如下:
public static List<List<String>> groupAnagrams(String[] strs) { int[] prime = {2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101, 103};//最多10609个z List<List<String>> res = new ArrayList<>(); HashMap<Integer, Integer> map = new HashMap<>(); for (String s : strs) { int key = 1; for (char c : s.toCharArray()) { key *= prime[c - 'a']; } List<String> t; if (map.containsKey(key)) { t = res.get(map.get(key)); } else { t = new ArrayList<>(); res.add(t); map.put(key, res.size() - 1); } t.add(s); } return res; }}
0 0
- 49. Group Anagrams
- [leetcode] 49.Group Anagrams
- 49. Group Anagrams
- LeetCode 49. Group Anagrams
- [LeetCode]49. Group Anagrams
- leetcode 49. Group Anagrams
- 49. Group Anagrams LeetCode
- 49. Group Anagrams
- 49. Group Anagrams
- 49. Group Anagrams
- Leetcode 49. Group Anagrams
- 49. Group Anagrams
- LeetCode 49. Group Anagrams
- 49. Group Anagrams
- 49. Group Anagrams
- LeetCode 49. Group Anagrams
- [leetcode] 49. Group Anagrams
- LeetCode 49. Group Anagrams
- 【POJ1474】监控摄像头 半平面交
- jQuery的属性与样式之切换样式.toggleClass()
- java死锁
- 密码脱落
- 一种比较匀速的差值运算
- 49. Group Anagrams
- 判断手机音量大小,做出提醒
- PTA 5-8 哈利波特的考试 (Java实现)
- <Android开源库> Realm For Android~ Queries(译文)
- 移动端如何禁止body的滚动
- ajax跨域
- 基于opencv的bp神经网络判别
- 欢迎使用CSDN-markdown编辑器
- linux 目录属性的意义