力扣 字母异位词分组
⭐ 思路
由于互为字母异位词的两个字符串包含的字母相同,因此对两个字符串分别进行排序之后得到的字符串一定是相同的,故可以将排序之后的字符串作为哈希表的键。
class Solution {
public List<List<String>> groupAnagrams(String[] strs)
{
HashMap<String, List<String>> map = new HashMap<>();
for (String s : strs)
{
char[] arr = s.toCharArray();//字符串转字符数组
Arrays.sort(arr);
String idx = String.valueOf(arr);//字符数组转字符串
List<String> list = map.getOrDefault(idx, new ArrayList<String>());
list.add(s);
map.put(idx, list);
// if (map.containsKey(idx))
// {
// map.get(idx).add(s);
// } else
// {
// ArrayList list = new ArrayList();
// list.add(s);
// map.put(idx, list);
// }
}
//将 map 中值作为 list集合的初始化值
List<List<String>> ans = new ArrayList<>(map.values());
return ans;
}
}