def group_anagrams(strs):
d={}
for s in strs:
k=tuple(sorted(s))
d.setdefault(k,[]).append(s)
return list(d.values())
public List<List<String>> groupAnagrams(String[] strs){
Map<String,List<String>> d=new HashMap<>();
for(String s:strs){
char[] c=s.toCharArray(); Arrays.sort(c); String k=new String(c);
d.computeIfAbsent(k,x->new ArrayList<>()).add(s);
} return new ArrayList<>(d.values());
}
Python tuple as dict key. setdefault() vs computeIfAbsent().
def group_anagrams(strs):
d={}
for s in strs:
k=tuple(sorted(s))
d.setdefault(k,[]).append(s)
return list(d.values())
public List<List<String>> groupAnagrams(String[] strs){
Map<String,List<String>> d=new HashMap<>();
for(String s:strs){
char[] c=s.toCharArray(); Arrays.sort(c); String k=new String(c);
d.computeIfAbsent(k,x->new ArrayList<>()).add(s);
} return new ArrayList<>(d.values());
}
1. Sort chars as key 2. Group by key