- 763. (尽可能多地)划分字母区间(Medium)
- 438. 找到字符串中所有字母异位词(Medium)/ 839. (交换2个字母)相似字符串组(Hard)/ 567. s2 是否包含 s1 的排列(M) / 字母分组(滑窗)问题!!!
题目链接
题解
思路
代码
class Solution:
### 0131 排序(80 ms,17.6 MB)
def groupAnagrams(self, strs: List[str]) -> List[List[str]]:
dd = collections.defaultdict(list)
for s in strs:
# 直接对当前s排序,并作为键
key = ''.join(sorted(s))
dd[key].append(s)
return list(dd.values())
### 0131 计数(84 ms,19.9 MB)
def groupAnagrams(self, strs: List[str]) -> List[List[str]]:
dd = collections.defaultdict(list)
for s in strs:
# 对每个字符串新建一个26位的字符列表作为键
count = [0] * 26
# 统计当前s中每一个字符的数量,以此作为键
for c in s:
count[ord(c) - ord('a')] += 1
# 注意:需要将 list 转换成 tuple 才能进行哈希!
dd[tuple(count)].append(s)
return list(dd.values())