LeetCode 49. 字母异位词分组 (排序 + 哈希)

该博客介绍了如何通过哈希表和排序来解决字母异位词组合的编程问题。文章首先展示了问题的输入和输出示例,然后详细解释了解题思路,即利用哈希表记录字符串中每个字符出现的次数,通过排序字符串并将其作为哈希表的键,将相同字母组成的字符串归为一类。最后,给出了Java代码实现,并在main函数中进行了测试。这种方法有效地将字母异位词分组,实现了题目要求的功能。

文章目录

题目

  • 给你一个字符串数组,请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。

  • 字母异位词 是由重新排列源单词的字母得到的一个新单词,所有源单词中的字母都恰好只用一次。

示例 1:

输入: strs = ["eat", "tea", "tan", "ate", "nat", "bat"]
输出: [["bat"],["nat","tan"],["ate","eat","tea"]]

题解

  • 利用哈希表 ,遍历元素及其个数相同

  • 解法一: 排序 + 哈希

两个字符串互为字母异位词 < == > 两个字符串包含的字母( 个数以及元素 )相同

  • 一旦需要根据特征进行归类,就应该利用散列表

在这里插入图片描述

代码

package leetcodePlan.Base;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class P0049 {

	public static void main(String[] args) {

		String [] strs = {"eat", "tea", "tan", "ate", "nat", "bat"} ;
		
		System.out.println(fun(strs));
	}
	
    public static List<List<String>> fun(String[] strs) {

    	Map<String,List<String>> map = new HashMap<String,List<String>>() ;
    	
    	for(String str : strs) {
    		char[] array = str.toCharArray() ;
    		Arrays.sort(array);
    		
    		String key = new String(array) ;
    		List<String> list = map.getOrDefault(key, new ArrayList<String>()) ;
    		list.add(str) ;
    		map.put(key, list) ;   		
    	}
           return new ArrayList<List<String>>(map.values()) ;         	
    }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值