#49
Medium
前缀和

Group Anagrams

把互为字母异位词的字符串分组。

StringHash Table

题目定位

这题关键在于为字符频次设计一个规范签名,它更像频次统计类题,而不是遍历类题。

关键观察

两个字符串能分到同一组,当且仅当它们标准化后的字符频次签名相同。

目标复杂度

O(total chars) / O(n)

这题的解法思路怎么拆

1

这题关键在于为字符频次设计一个规范签名,它更像频次统计类题,而不是遍历类题。

2

两个字符串能分到同一组,当且仅当它们标准化后的字符频次签名相同。

3

先定义累计状态代表什么。

4

一趟扫描构造前缀。

参考实现

Python
# Generic pattern template
prefix = [0] * (len(nums) + 1)
for i, value in enumerate(nums):
    prefix[i + 1] = prefix[i] + value

range_sum = prefix[r + 1] - prefix[l]

常见坑点

warning

直接把原字符串当 key。

warning

构造的签名不够明确,不同频次组合会冲突。

高频追问

排序字符串 key 和计数向量 key 该怎么选?

如果输入包含大量 Unicode 字符,方案要怎么调整?

继续刷相关题

先把 前缀和 这个模式刷成体系,再去做更难变体。

view_week回到模式页
LeetCode 49. Group Anagrams 题解思路 | Interview AiBox