前言

使用语言 Python, 只针对 LC Medium 和 Hard 题, 面向面试刷题
Note: 除非你面前端 (加上 JS) , 否则统一使用 Python 进行刷题


基本操作

# 创建
d = {}
d = {"a": 1, "b": 2}

# 赋值
d["key"] = value

# 取值
d["key"] # key 不存在会报错
d.get("key") # key 不存在返回 None
d.get("key", 0) # key 不存在返回默认值 0
# 检查 key 是否存在
if "key" in d:

# 遍历
for key in d: # 只遍历 key
for key, value in d.items(): # 遍历 key 和 value
for value in d.values(): # 只遍历 value

# 删除
del d["key"]
d.pop("key") # 删除并返回 value
d.pop("key", None) # key 不存在不报错

# 长度
len(d)

统计频率

# 方法 1:get
freq = {}
for c in s:
freq[c] = freq.get(c, 0) + 1

# 方法 2:Counter(更简洁)
from collections import Counter
freq = Counter(s) # 直接返回 {"a": 3, "b": 2}

defaultdict

from collections import defaultdict

d = defaultdict(int) # 默认值 0
d["a"] += 1 # 不用检查 key 是否存在

d = defaultdict(list) # 默认值 []
d["a"].append(1) # 直接 append

排序 dict

# 按 key 排序
sorted(d.items()) # [("a", 1), ("b", 2)]

# 按 value 排序
sorted(d.items(), key=lambda x: x[1]) # 升序
sorted(d.items(), key=lambda x: -x[1]) # 降序

题目

LC 49

这题更像是取巧, 把每个单词 sorted 然后加上 tuple 弄成 key