前言:
49. 字母异位词分组作者:神的孩子在歌唱
大家好,我叫运智
难度中等847收藏分享切换为英文接收动态反馈
给你一个字符串数组,请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。
字母异位词 是由重新排列源单词的字母得到的一个新单词,所有源单词中的字母都恰好只用一次。
示例 1:
输入: strs = ["eat", "tea", "tan", "ate", "nat", "bat"] 输出: [["bat"],["nat","tan"],["ate","eat","tea"]]
示例 2:
输入: strs = [""] 输出: [[""]]
示例 3:
输入: strs = ["a"] 输出: [["a"]]
提示:
- 1 <= strs.length <= 104
- 0 <= strs[i].length <= 100
- strs[i] 仅包含小写字母
package 排序;
import java.util.List;
import java.lang.reflect.Array;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
public class _49_字母异位词分组 {
// 一旦需要根据特征进行归类就要散列表
public static List> groupAnagrams(String[] strs) {
// 如果字符长度为0就返回空
// 定义哈希散列表
HashMap> map=new HashMap<>();
// 遍历
for(String str:strs) {
// 将字符串转为字符数组
char[] s=str.toCharArray();
// 然后进行排序,由于是字符,所以可以根据ascll码来排序
Arrays.sort(s);
// 然后在转为字符串
String st=String.valueOf(s);
// 如果排序好的数据不存在哈希中,那么就是新的字符串
if (!map.containsKey(st)) {
// 将这个新的键存入,创建一个队列空值
map.put(st, new ArrayList()) ;
}
// 不管哈希表里有没有这个字符串都存入
map.get(st).add(str);//获取对应得键值追加
}
return new ArrayList(map.values());
}
public static void main(String args[]) {
String[] strs= {"eat", "tea", "tan", "ate", "nat", "bat"};
List> s=groupAnagrams(strs);
System.out.print(s);
}
}
本人csdn博客:https://blog.csdn.net/weixin_46654114
转载说明:跟我说明,务必注明来源,附带本人博客连接。



