代码随想录链接:
https://gitee.com/programmercarl/leetcode-master/blob/master/problems/1002.查找常用字符.md
思路:
第一步统计每个字符串的字符出现频数并存hash,最后统计每个字符(以第一个串的字符为准即可)出现频数的最小值(为0则表示非共有字符)作为res的字符重复数输出即可
我的代码:
class Solution:
def commonChars(self, words: List[str]) -> List[str]:
from collections import defaultdict
dic = [defaultdict(int)]
for i in range(len(words)):
dic.append(defaultdict(int))
for j in range(len(words[i])):
dic[i][words[i][j]] += 1
res = []
minx = float('inf')
for i in set(words[0]):
for j in dic:
if minx > j[i]:
minx = j[i]
for _ in range(minx):
res.append(i)
minx = float('inf')
return res
但还不够简化,随想录提到了collections.Counter,专门统计元素出现频数,且可直接对counter取交集,返回value最小值的键值对(defaultdict不行):
class Solution:
def commonChars(self, words: List[str]) -> List[str]:
tmp = collections.Counter(words[0])
l = []
for i in range(1,len(words)):
# 使用 & 取交集
tmp = tmp & collections.Counter(words[i])
# 剩下的就是每个单词都出现的字符(键),个数(值)
for j in tmp:
v = tmp[j]
while(v):
l.append(j)
v -= 1
return l
分类:
LeetCode刷题随笔
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)