天津网站建设制作系统,设计主题和设计理念,wordpress重复文章,建设部网站社保联网字母异位词分组
给你一个字符串数组#xff0c;请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。
字母异位词 是由重新排列源单词的所有字母得到的一个新单词。
示例 1:
输入: strs [“eat”, “tea”, “tan”, “ate”, “nat”, “bat”] 输出: [[“bat”…字母异位词分组
给你一个字符串数组请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。
字母异位词 是由重新排列源单词的所有字母得到的一个新单词。
示例 1:
输入: strs [“eat”, “tea”, “tan”, “ate”, “nat”, “bat”] 输出: [[“bat”],[“nat”,“tan”],[“ate”,“eat”,“tea”]]
解题思路
1、创建一个哈希表键为排序后的字符串值为原始字符串列表。 2、遍历字符串数组对每个字符串进行排序并将排序后的字符串作为键将原始字符串添加到对应键的值列表中。 3、返回哈希表中所有值列表即为字母异位词组合在一起的结果。
具体步骤
1、创建一个哈希表 MapString, List map。 2、遍历字符串数组 strs 对每个字符串 str 进行排序得到排序后的字符串 sortedStr。 如果 sortedStr 不在哈希表的键集合中则将其添加为键对应的值初 始化为一个新的字符串列表。 将原始字符串 str 添加到 sortedStr 对应的值列表中。 3、返回哈希表的所有值列表。
java实现
public class GroupAnagrams {public static ListListString groupAnagrams(String[] strs) {if (strs null || strs.length 0) {return new ArrayList();}MapString, ListString anagramGroups new HashMap();for (String str : strs) {char[] charArray str.toCharArray();Arrays.sort(charArray);String sortedStr new String(charArray);anagramGroups.computeIfAbsent(sortedStr, k - new ArrayList()).add(str);}return new ArrayList(anagramGroups.values());}public static void main(String[] args) {String[] words {eat, tea, tan, ate, nat, bat};ListListString result groupAnagrams(words);System.out.println(result);}
}