package LeetCode;
import java.util.*;
/*
给定一个字符串数组,将字母异位词组合在一起。字母异位词指字母相同,但排列不同的字符串。
示例:
输入: ["eat", "tea", "tan", "ate", "nat", "bat"],
输出:
[
["ate","eat","tea"],
["nat","tan"],
["bat"]
]
所有输入均为小写字母。
不考虑答案输出的顺序。
*/
public class GroupAnagrams {
public List<List<String>> groupAnagrams(String[] strs) {
List<List<String>> res = new ArrayList<>();
Map<String, List<String>> m = new HashMap<>();
for (int i = 0; i <strs.length ; i++) {
char[] r= strs[i].toCharArray();
Arrays.sort(r);
String k=new String(r);
if (m.containsKey(k)){
List<String> p=m.get(k);
p.add(strs[i]);
m.put(k,p);
}else {
List<String> p=new ArrayList<>();
p.add(strs[i]);
m.put(k,p);
}
}
res.addAll(m.values());
return res;
}
public static void main(String[] args) {
GroupAnagrams s=new GroupAnagrams();
String[] a={"eat","tea","tan","ate","nat","bat"};
System.out.println( s.groupAnagrams(a));
}
}
leetcode:49. 字母异位词分组(java)
猜你喜欢
转载自blog.csdn.net/microopithecus/article/details/84985440
今日推荐
周排行