首页 > 其他分享 >1002 查找公用字符

1002 查找公用字符

时间:2023-01-03 15:56:33浏览次数:53  
标签:字符 word res 公用 查找 words ord 1002

题目 1002 查找公用字符

给你一个字符串数组 words ,请你找出所有在 words 的每个字符串中都出现的共用字符( 包括重复字符),并以数组形式返回。你可以按任意顺序返回答案。

示例 1:

输入:words = ["bella","label","roller"]
输出:["e","l","l"]

示例 2:

输入:words = ["cool","lock","cook"]
输出:["c","o"]

提示:words[i] 由小写英文字母组成

思路

  • 小写字符,公用字符出现频率,立马想到用哈希表可做,且用数组哈希结构即可
  • 用手画一下可知,所求结果是所有单词词频取最小公用词频,如下图:
    image

代码

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

相关文章

  • SQL201 查找薪水记录超过15条的员工号emp_no以及其对应的记录次数t
    查找薪水记录超过15条的员工号emp_no以及其对应的记录次数t知识点where和having用法:1、where、聚合函数、having在from后面的执行顺序:where>聚合函数(sum,min,max,avg......
  • abstract; final; 属性赋值的先后顺序; 静态变量与实例变量的区别; instanceof关键字的使
    abstract注意事项。abstract不能修饰:private,static,final这些方法。abstract抽象要重写----》用来子类继承实现方法的1、abstract不能用来修饰属性、构造器等构造器不能......
  • 二分查找
    概念:适用范围:有序数组在顺序查找的基础上改进,每次查找都是用mid时间\(O(logn)\)算法intl=0,r=n-1;while(l<=r){//这里因为用来等号下面就要用减或者加int......
  • BM18 二维数组中的查找
    题目描述给定一个每个元素都是升序数组的二维数组和一个target,判断target是否在数组中返回boolean类型思路分析方法一:遍历每个元素,判断是否相等方法二:将数组拍平,也......
  • BM17 二分查找-I
    题目描述请实现无重复数字的升序数组的二分查找给定一个元素升序的、无重复数字的整型数组nums和一个目标值target,写一个函数搜索nums中的target,如果目标值存在......
  • Linux&shell通过正则表达式查找文件练习
    linux&shell编程中通过正则表达式来匹配查找文件极大的提高查找效率。首先,解释一下下边出现的命令。linux部分:ls:查看文件夹内的命令。|:管道。grep:搜索后边匹配的字符......
  • C# 在excel中查找及替换数据
    在使用Excel处理数据时,有时候工作表内容很多,如果手动地一行一行的找数据很难发现它们在哪个地方。微软Excel给我们提供了一个很强大的数据处理功能-查找和替换,通过这个功能,......
  • 力扣二分查找
    题目给定一个n个元素有序的(升序)整型数组nums和一个目标值target,写一个函数搜索nums中的target,如果目标值存在返回下标,否则返回-1。示例1:输入:nums=[-1,......
  • 二分查找
    题目题目地址描述请实现无重复数字的升序数组的二分查找给定一个元素升序的、无重复数字的整型数组nums和一个目标值target,写一个函数搜索nums中的target,如果......
  • 【LeeCode】34. 在排序数组中查找元素的第一个和最后一个位置
    【题目描述】给你一个按照非递减顺序排列的整数数组 ​​nums​​​,和一个目标值 ​​target​​。请你找出给定目标值在数组中的开始位置和结束位置。如果数组中不存在目......