【Leetcode-Hot100】字母异位词分组

题目

解答

排序哈希表方法

其中,key="".join(sorted(str))使用的原因可以被拆解为:str是一个字符串,例如'abc',当使用sorted进行排序后,返回的是一个个字母组成的列表['a', 'b', 'c'],因此使用join后,会将字母重新组合为字符串,传送给key。

  • 时间复杂度nklogk,空间复杂度nk

计数哈希表方法

  • 时间复杂度:O(n(k+∣Σ∣)),其中 n 是 strs 中的字符串的数量,k 是 strs 中的字符串的的最大长度,Σ 是字符集,在本题中字符集为所有小写字母,∣Σ∣=26。需要遍历 n 个字符串,对于每个字符串,需要 O(k) 的时间计算每个字母出现的次数,O(∣Σ∣) 的时间生成哈希表的键,以及 O(1) 的时间更新哈希表,因此总时间复杂度是 O(n(k+∣Σ∣))。

  • 空间复杂度:O(n(k+∣Σ∣)),其中 n 是 strs 中的字符串的数量,k 是 strs 中的字符串的最大长度,Σ 是字符集,在本题中字符集为所有小写字母,∣Σ∣=26。需要用哈希表存储全部字符串,而记录每个字符串中每个字母出现次数的数组需要的空间为 O(∣Σ∣),在渐进意义下小于 O(n(k+∣Σ∣)),可以忽略不计。

若当k的长度很大时,使用排序算法具有更高的效率。

相关推荐
刘海东刘海东2 分钟前
结构型智能科技的关键可行性——信息型智能向结构型智能的转变(修改提纲)
人工智能·算法·机器学习
pumpkin8451429 分钟前
Rust 调用 C 函数的 FFI
c语言·算法·rust
挺菜的41 分钟前
【算法刷题记录(简单题)003】统计大写字母个数(java代码实现)
java·数据结构·算法
mit6.82441 分钟前
7.6 优先队列| dijkstra | hash | rust
算法
2401_858286111 小时前
125.【C语言】数据结构之归并排序递归解法
c语言·开发语言·数据结构·算法·排序算法·归并排序
guygg882 小时前
基于matlab的FIR滤波器
开发语言·算法·matlab
ysh98882 小时前
PP-OCR:一款实用的超轻量级OCR系统
算法
遇雪长安3 小时前
差分定位技术:原理、分类与应用场景
算法·分类·数据挖掘·rtk·差分定位
天真小巫3 小时前
2025.7.6总结
职场和发展
数通Dinner3 小时前
RSTP 拓扑收敛机制
网络·网络协议·tcp/ip·算法·信息与通信