Leetcode热题100_49.字母异位词分组
Leetcode热题100_49.字母异位词分组
题目要求
- 给你一个字符串数组,请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。
示例1:
输入: strs = [“eat”, “tea”, “tan”, “ate”, “nat”, “bat”]
输出: [[“bat”],[“nat”,“tan”],[“ate”,“eat”,“tea”]]
解释:
- 在strs中没有字符串可以通过重新排列来形成
"bat"。 - 字符串
"nat"和"tan"是字母异位词,因为它们可以重新排列以形成彼此。 - 字符串
"ate","eat"和"tea"是字母异位词,因为它们可以重新排列以形成彼此。
示例 2:
输入: strs = [“”]
输出: [[“”]]
示例 3:
输入: strs = [“a”]
输出: [[“a”]]
哈希表
- 实现原理:对于字母异位词,它们排序后的字符串相同,因此可以将排序后的字符串作为哈希表的键,将原始字符串添加到对应键的值列表中。
1 | class Solution { |
- 时间复杂度:
- 字符串排序的时间复杂度:O(k log k),其中k是字符串的平均长度。
- 遍历字符串数组的时间复杂度:O(n),其中n是字符串数组的长度。
- 总体时间复杂度:O(n * k log k)。
- 空间复杂度:
- 哈希表的空间复杂度:O(n * k),其中n是字符串数组的长度,k是字符串的平均长度。
- 排序过程中使用的空间复杂度:O(k)。
- 总体空间复杂度:O(n * k)。
