LeetCode 49.字母异位词分组
程序员文章站
2022-07-12 12:57:58
...
1.题目
https://leetcode-cn.com/problems/group-anagrams/
2.解题思路
首先,异位词是指,字母相同(个数和字母都相同)但是排列顺序不同的字符串。
我们要将字符串中的异位词放到一个List中。
首先区分情况,
情况一:数组中没有字符串;那就直接传空。
情况二:数组中有字符串。
此时我们需要想清楚,如何得到异位词。
异位词既然他的字母是相同的,那么将他们按照26个英文字母的顺序排列下来。得到的那个值也一定是相同的,之后,我们对于每一个值都比较一下,如果排列之后的结果相同,则互为异位词。
可以用Map的k-v 形式来储存结果,Key就是排序之后得到的值。
得到Map之后,再将Value部分装到List中去。便可得到结果。
3.代码
Java:
public List<List<String>> groupAnagrams(String[] strs) {
//情况一:数组里面没有字符串;
if(strs.length==0) {
return Collections.emptyList();
}
//情况二:数组里面有字符串;
HashMap<String, List<String>> stringListHashMap = new HashMap<>();
for(String str:strs){
char[] chars = str.toCharArray();
Arrays.sort(chars);
String key = String.valueOf(chars);
if(!stringListHashMap.containsKey(key)){
stringListHashMap.put(key,new ArrayList<String>());
}
stringListHashMap.get(key).add(str);
}
//现在上面就把异位词给分类整理好了
ArrayList<List<String>> resultList = new ArrayList<>(stringListHashMap.values());
return resultList;
}
转载于:https://www.jianshu.com/p/87509f111f5e
上一篇: kkb第二节课程