Leetcode刷题100天—49. 字母异位词分组( 排序)—day37

举报
神的孩子在歌唱 发表于 2021/10/18 20:59:12 2021/10/18
【摘要】 前言:作者:神的孩子在歌唱大家好,我叫运智 49. 字母异位词分组难度中等847收藏分享切换为英文接收动态反馈给你一个字符串数组,请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。字母异位词 是由重新排列源单词的字母得到的一个新单词,所有源单词中的字母都恰好只用一次。示例 1:输入: strs = ["eat", "tea", "tan", "ate", "nat", "bat"]...

前言:

作者:神的孩子在歌唱

大家好,我叫运智

image-20210913205256651

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;

/*
 * https://leetcode-cn.com/problems/group-anagrams/
 * 解题思路:每个字母异位词分组字符都是相同得,只不过字符顺序不一样,
 * 我们可以将他们变成ascll然后进行排列,最后在转为字符串,
 * 根据散列表性质:将顺序排号得字符作为键,字母异位词作为值
 * 
 */
public class _49_字母异位词分组 {
//	一旦需要根据特征进行归类就要散列表
    public static List<List<String>> groupAnagrams(String[] strs) {
//    	如果字符长度为0就返回空
//    	定义哈希散列表
    	HashMap<String,List<String>> 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<List<String>> s=groupAnagrams(strs);
    	System.out.print(s);
    }
}

本人csdn博客:https://blog.csdn.net/weixin_46654114

转载说明:跟我说明,务必注明来源,附带本人博客连接。

【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

举报
请填写举报理由
0/200