一、题目描述:

解法1:
思路:
1、先考虑正常情况(如示例1)
2、创建哈希表hash_table(空字典)
3、从头开始遍历,对遍历到的字符串s使用sorted()函数排序(注意此时输出为列表后续不好做字典key值,需要再用"".join(sorted_list)方法重新变成字符串sorted_str)
4、如果排序后的字符串sorted_str不在字典key中,将sorted_str作为key存放到hash_table中,并赋值[“s”];如果排序后的字符串sorted_str在字典key中,使用append()函数添加到对应key值的value列表里
5、最后以列表形式输出字典里所有的value值
class Solution:
def groupAnagrams(self, strs: List[str]) -> List[List[str]]:
hash_table = {}
for s in strs:
key = "".join(sorted(s))
if key not in hash_table:
hash_table[key] = [s]
else:
hash_table[key].append(s)
return [value for value in hash_table.values()] # 或者list(hash_table.values())
二、补充知识点:
1、sorted和sort函数区别:
- 核心区别

sorted() 函数是 Python 中用于排序的内置函数,其默认排序规则如下:
升序排列:默认从小到大排序(数字按数值大小,字符串按字典序)。
基于元素类型:
1、数字:按数值大小排序(1 < 2 < 3)。
2、字符串:按字符的 Unicode 码点(code point)逐个比较。
3、大写字母(A-Z)的码点小于小写字母(a-z),例如 “Apple” 会排在 “banana” 前。
4、数字字符(0-9)的码点小于字母,例如 “100” 会排在 “apple” 前。
5、特殊符号(如 !, @, #)按 Unicode 码点排序。 - 参数对比
两者均支持以下参数:
key:指定排序规则(如 key=len 按长度排序)
reverse:是否降序(reverse=True 时降序)
示例代码
# 对列表原地排序(sort)
nums = [3, 1, 4, 2]
nums.sort()
print(nums) # 输出 [1, 2, 3, 4]
# 生成新列表(sorted)
words = ("apple", "banana", "cherry")
sorted_words = sorted(words, key=lambda x: x[-1]) # 按最后一个字符排序
print(sorted_words) # 输出 ['banana', 'apple', 'cherry']
- 使用场景
# 场景 1:需要保留原对象
# 用 sorted():
original = [5, 2, 9, 1]
new_list = sorted(original) # 原列表不变
print(original) # [5, 2, 9, 1]
print(new_list) # [1, 2, 5, 9]
# 场景 2:直接修改原列表
# 用 sort():
lst = [5, 2, 9, 1]
lst.sort() # 直接修改原列表
print(lst) # [1, 2, 5, 9]
# 场景 3:排序非列表对象
# 用 sorted():
# 对字符串排序
s = "python"
print(sorted(s)) # ['h', 'n', 'o', 'p', 't', 'y']
# 对字典的键排序
d = {"b": 2, "a": 1, "c": 3}
print(sorted(d)) # ['a', 'b', 'c']
- 性能对比
时间复杂度:两者均使用 Timsort 算法,平均和最坏时间复杂度为 O(n log n)。
空间复杂度:
sort() 是原地排序,空间复杂度 O(1)。
sorted() 需要生成新列表,空间复杂度 O(n)。
适用场景:
若需节省内存且允许修改原列表 → 用 sort()。
若需保留原对象或排序非列表 → 用 sorted()。 - 常见误区
# 错误 1:对 sort() 的返回值赋值
lst = [3, 1, 2]
result = lst.sort() # sort() 返回 None
print(result) # None(正确用法是直接使用原列表)
# 错误 2:尝试对元组使用 sort()
t = (3, 1, 2)
t.sort() # 报错!元组没有 sort() 方法
- 高级用法
# 按自定义规则排序
# 1、按字符串长度排序(从短到长)
words = ["apple", "kiwi", "banana"]
words.sort(key=len)
print(words) # ['kiwi', 'apple', 'banana']
# 2、按字典的值排序
data = [{"name": "Alice", "age": 25}, {"name": "Bob", "age": 20}]
sorted_data = sorted(data, key=lambda x: x["age"])
print(sorted_data) # [{'name': 'Bob', 'age': 20}, {'name': 'Alice', 'age': 25}]
总结

2、values()函数
在 Python 中,values() 是字典(dict)的一个内置方法,它的作用是返回字典中所有值(value)的集合。以下是详细解释:



458

被折叠的 条评论
为什么被折叠?



