49. Group Anagrams
来源:互联网 发布:模拟钢琴的软件 编辑:程序博客网 时间:2024/05/01 23:47
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:
- For the return value, each inner list's elements must follow the lexicographic order.
- All inputs will be in lower-case.
思路:因为要求结果是要按字典序排列的,我们现将这系列字符串按照字典序排列好,省的最后在将每一个list按照字典序排序,然后就是遇到一个新的,就增加一个list,当然也可以用map,这里就是用map实现的
代码如下(已通过leetcode)
public class Solution {
public List<List<String>> groupAnagrams(String[] strs) {
List<List<String>> lists=new ArrayList<List<String>>();
List<String> list=null;
Arrays.sort(strs);
Map<String,List<String>> map=new HashMap<String,List<String>>();
for(int i=0;i<strs.length;i++) {
if(map.containsKey(reorderstring(strs[i]))) {
map.get(reorderstring(strs[i])).add(strs[i]);
} else {
list=new ArrayList<String>();
list.add(strs[i]);
map.put(reorderstring(strs[i]),list);
}
}
for(int i=0;i<strs.length;i++) {
if(map.isEmpty()) break;
else {
if(map.containsKey(reorderstring(strs[i]))) {
lists.add(map.get(reorderstring(strs[i])));
map.remove(reorderstring(strs[i]));
}
}
}
return lists;
}
public String reorderstring(String str) {
char[] cc = str.toCharArray();
Arrays.sort(cc);
StringBuilder sb = new StringBuilder();
for (int i = 0; i < cc.length; i++)
sb.append(cc[i]);
return sb.toString();
}
}
- 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
- Python:Argparse
- Spring 注解方式配置aop:
- ubuntu16.04搭建Hadoop2.7.2+spark1.6.1+mysql+hive2.0.0伪分布学习环境
- Unity3D- 自动寻路
- Linux总结(八):yum与rpm 命令详解
- 49. Group Anagrams
- AsyncTask和Handler选谁
- MMORPG游戏设计
- Oracle 表容量计算
- 源代码管理
- CodeForces245H - Queries for Number of Palindromes(区间dp)
- C++ split
- 【Linux】tcp缓冲区大小的默认值、最大值
- HTML5中与类相关的扩充classList