LeetCode(49):字母异位词分组 Group Anagrams(Java)

这篇博客探讨了在LeetCode中解决49题‘字母异位词分组’的方法,重点介绍了利用哈希表进行分组的三种策略:排序后的字符数组、字母出现次数统计和质数表示字母。博主分享了String和StringBuilder在哈希表中作为key值时的注意事项,强调了String.valueOf()和toString()在不同场景下的表现。博客提供了问题的解决方案,并鼓励读者留言点赞。
摘要由CSDN通过智能技术生成

2019.5.23 #程序员笔试必备# LeetCode 从零单刷个人笔记整理(持续更新)

这题还是有点技巧。根本上来说,只需要通过一个哈希表就可以进行分组。技巧在于如何选取哈希表的Key值。有三种方案:

1.将排序后的字符数组作为Key

2.统计字母出现次数作为key

3.用质数表示每一个字母,用字符串字母乘积作为key

另外在使用过程中需要注意String作为哈希表key值的问题(相同值的String变量哈希码可能不同)

对于charArray变量,String.valueOf()底层是new String()。

相同值不同哈希码的charArray变量依次使用Object.toString()之后hashCode()不同,依次使用String.valueOf()之后hashCode()相同。

对于StringBuildrer变量,String.valueOf()底层是Object.toString(),StringBuildrer重写的toString()底层是new String()。

相同值不同哈希码的StringBuildrer变量依次使用String.valueOf()/Object.toString()之后hashCode()相同,依次使用toString()之后hashCode()也相同。


传送门:字母异位词分组

Given an array of strings, group anagrams together.

给定一个字符串数组,将字母异位词组合在一起。字母异位词指字母相同,但排列不同的字符串。

示例:
输入: ["eat", "tea", "tan", "ate", "nat", "bat"],
输出:
[
  ["ate","eat","tea"],
  ["nat","tan"],
  ["bat"]
]

说明:
所有输入均为小写字母。
不考虑答案输出的顺序。


import java.util.*;

/**
 *
 * Given an array of strings, group anagrams together.
 * 给定一个字符串数组,将字母异位词组合在一起。字母异位词指字母相同,但排列不同的字符串。
 *
 */

public class GroupAnagrams {
   

    //将排序后的字符数组作为key
    //相同值不同哈希码的charArray变量依次使用Object.toString()之后hashCode()不同,依次使用String.valueOf()之后hashCode()相同。
    public List<List<String>> groupAnagrams(String[] strs) {
   
        HashMap
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值