题目 1002 查找公用字符
给你一个字符串数组 words ,请你找出所有在 words 的每个字符串中都出现的共用字符( 包括重复字符),并以数组形式返回。你可以按任意顺序返回答案。
示例 1:
输入:words = ["bella","label","roller"]
输出:["e","l","l"]
示例 2:
输入:words = ["cool","lock","cook"]
输出:["c","o"]
提示:words[i] 由小写英文字母组成
思路
- 小写字符,公用字符出现频率,立马想到用哈希表可做,且用数组哈希结构即可
- 用手画一下可知,所求结果是所有单词词频取最小公用词频,如下图:
代码
class Solution:
def commonChars(self, words: List[str]) -> List[str]:
if not words: return []
# 统计第一个词的字符数量
res = [0] * 26
for word in words[0]:
res[ord(word)-ord("a")] += 1
# 统计第二词及后面词的字符数量,且每个词统计后与前面的字符串进行对比取最小值存入结果中
for i in range(1, len(words)):
li1 = [0] * 26
for word in words[i]:
li1[ord(word) - ord("a")] += 1
# 对比前一个词的字符数量取最小值
res_tmp = []
for i, j in zip(res, li1):
res_tmp.append(min(i, j))
res = res_tmp
# res存放的是重复字符的数量 [0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
# 处理res得到最终的结果
fin_res = []
for idx, num in enumerate(res):
if num == 0: continue
for i in range(num):
fin_res.append(chr(idx + 97))
return fin_res
标签:字符,word,res,公用,查找,words,ord,1002
From: https://www.cnblogs.com/edkong/p/17022468.html