建网站 多少钱钱,免费广告投放平台,盐城企业做网站多少钱,做logo设计网站题目描述#xff1a;
49. 字母异位词分组
难度 中等
给你一个字符串数组#xff0c;请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。
字母异位词 是由重新排列源单词的所有字母得到的一个新单词。
示例 1:
输入: strs [eat, tea…题目描述
49. 字母异位词分组
难度 中等
给你一个字符串数组请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。
字母异位词 是由重新排列源单词的所有字母得到的一个新单词。
示例 1:
输入: strs [eat, tea, tan, ate, nat, bat]
输出: [[bat],[nat,tan],[ate,eat,tea]]
示例 2:
输入: strs []
输出: [[]]示例 3:
输入: strs [a]
输出: [[a]]
解题思路分析 题目意思简而言之就是所有输入的单词不关注单词中字母的排列顺序只要字母都相同的就分为一组。 那么我们可以创建一个map集合map集合的key存放每个单词排序后的字符串map集合的value存放一个List集合该集合中存放所有字母都相同的单词。 实现步骤 1.将输入的字符串数组分别循环取出 2.取出字符数组中的单个字符串后再将将每个字符串转成字符数组 3.把字符数组排序后再转成字符串作为map集合的key 4.查看map集合中是否有排序后字符串的key对应的值没有则对该key创建一个value值ArrayListString 5.将当前的字符串存放到当前key对应的map集合中 6.创建一个ArrayList集合存入所有map集合的value后返回【return ArrayListListString(map.values())】 注意ListString list map.getOrDefault(key, new ArrayListString()); 这里用List接收向上转型这个是java基础不清楚的小伙伴可以去回顾一下这里不再赘述 代码
class Solution {public ListListString groupAnagrams(String[] strs) {MapString, ListString map new HashMap();// 循环每个字符串数组for (String str : strs) {// 将字符串数组转成字符数组char[] chars str.toCharArray();// 将字符数组中的字符排序Arrays.sort(chars);// 将排序后的字符数组转成新的排序后字符串String key new String(chars);// 获取当前map集合中key对应的list集合没有则新建一个list集合ListString list map.getOrDefault(key, new ArrayListString());// 将当前字符串添加到list集合中list.add(str);// 存入排序后的字符串作为key存入当前字符串map.put(key, list);}// 取出map中的所有value放入ArrayList集合中返回 return new ArrayListListString(map.values());}
} 最后大功告成