问题描述:

916. 单词子集

我们给出两个单词数组AB。每个单词都是一串小写字母。

现在,如果b中的每个字母都出现在a中,包括重复出现的字母,那么称单词b是单词a的子集。 例如,“wrr”“warrior” 的子集,但不是 “world”的子集。

如果对B中的每一个单词bb都是a的子集,那么我们称A中的单词a是通用的。

你可以按任意顺序以列表形式返回A中所有的通用单词。

示例 :

输入:A = [“amazon”,“apple”,“facebook”,“google”,“leetcode”], B = [“lo”,“eo”]
输出:[“google”,“leetcode”]

提示:

  1. 1 <= A.length, B.length <= 10000
  2. 1 <= A[i].length, B[i].length <= 10
  3. A[i]B[i]只由小写字母组成。
  4. A[i]中所有的单词都是独一无二的,也就是说不存在i != j使得A[i] == A[j]

问题分析:

   先来理解题目,题目强调的是单个字母,不存在字母顺序问题,所以只要统计出B中每个小写字母,在所有的单词中出现次数最高的那个数(例如,B = ["loo","eo"],那么o 最大的出现次数为2, 因为在"loo"出现了两次,在"eo"出现了一次,所以以最大的为准),然后再统计A中的每个单词中的每个字母出现的次数,与其对比即可。
具体思路:
(1)先统计出数组B中每个小写字母的最大出现次数,因为是题目只包含26个小写字母,所以,可以直接转换成数组来保存。(这这个过程中,可以用字典或者hash来保存,这样可能会更快一些)
(2)然后,依次统计A中的没单词中每个字母的出现个数,与(1)统计的结果做对比,选择出通用单词即可。

Python3实现:

class Solution:def wordSubsets(self, A, B):def count(word):  # 统计单词中每个字母出现的次数cnt = [0] * 26for letter in word:cnt[ord(letter) - ord('a')] += 1return cntbmax = [0] * 26for b in B:for i, c in enumerate(count(b)):bmax[i] = max(bmax[i], c)  # 选择出现次数最多那个作为后面比较的标准res = []for a in A:  # 判断 A 中的每个单词,并依次添加到结果if all(x >= y for x, y in zip(count(a), bmax)):res.append(a)return resif __name__ == '__main__':A, B = ["amazon", "apple", "facebook", "google", "leetcode"],  ["e", "o"]solu = Solution()print(solu.wordSubsets(A, B))

声明: 总结学习,有问题可以批评指正,大神可以略过哦。
题目链接、参考链接

LeetCode:916. Word Subsets - Python相关推荐

  1. Python办公自动化(一):从Word到Excel

    有这样一份Word(由于涉及文件私密所以文中的具体内容已做修改) 一共有近2600条类似格式的表格细栏,每个栏目包括的信息有: 日期 发文单位 文号 标题 签收栏 需要提取其中加粗的这三项内容到Exc ...

  2. LeetCode:322. 零钱兑换(python)

    LeetCode:322. 零钱兑换(python) 给定不同面额的硬币 coins 和一个总金额 amount.编写一个函数来计算可以凑成总金额所需的最少的硬币个数.如果没有任何一种硬币组合能组成总 ...

  3. LeetCode:309. 最佳买卖股票时机含冷冻期(python)

    LeetCode:309. 最佳买卖股票时机含冷冻期(python) 给定一个整数数组,其中第 i 个元素代表了第 i 天的股票价格 . 设计一个算法计算出最大利润.在满足以下约束条件下,你可以尽可能 ...

  4. Python-docx:读写word文档的Python库

    Python-docx:读写word文档的Python库 1 Python DocX目前是Python OpenXML的一部分,你可以用它打开Word 2007及以后的文档,而用它保存的文档可以在Mi ...

  5. 力扣Leetcode:5. 最长回文子串(Python)

    题目描述 给你一个字符串 s,找到 s 中最长的回文子串. 题解:动态规划 这是一道很经典的题目.首先我想到了动态规划算法: 对于子串s[i-j],它为回文子串的条件为:s[i+1 - j-1]为回文 ...

  6. LeetCode 75. Sort Colors (python一次遍历,模拟三路快排)

    LeetCode 75. Sort Colors (python一次遍历,模拟三路快排) 题目分析: 本题需要实现数字只包含0,1,2的排序,并且要求一次遍历. 由于只用把数字隔离开,很容易想到快排的 ...

  7. 93%程序员都做过的事:来写一个python式的hello world吧

    学习编程语言的第一步,让你的程序对这个世界说一声 hello world! 这个程序是编程界经典中的经典,让无数编程恐惧症患者得以顺利写出第一个程序,从而走上大神的不归路! 1. 新建文本文档 先让我 ...

  8. LeetCode 字符串简单部分 算法 python实现

    ''' #2018-06-02 June Saturday the 22 week, the 153 day SZ LeetCode 字符串简单部分 算法 python实现 https://leetc ...

  9. Python3-word文档操作(八):提取word文档中的图片方式一-利用docx库

    1. 简介: 要获取word文档中的图片文件.思路就是先解压,再查找.python中,下面两个库都可以实现这个功能: (1)zip库 (2)docx库 zip库: 上一篇博文已经提过,word本质上也 ...

最新文章

  1. Cache_总体介绍
  2. 深入浅出jQuery (五) 如何自定义UI-Dialog?
  3. 一个css文件里实际并不存在的class,不能给element layout产生任何影响
  4. CentOS - 修改主机名教程(将 localhost.localdomain 改成其它名字)
  5. Java内存配太大导致fullgc_记一次因为短命大对象导致fullGC的问题
  6. ubuntu1404_server搭建lamp
  7. 【Java数据结构与算法】第四章 栈实现综合计算器
  8. 10年前腾讯微信后台第一天提交的代码曝光;苹果App Store佣金抽成再做让步;TypeScript 4.1发布|极客头条...
  9. VS2013代码调试:[7]如何避免调试时加载符号
  10. 2.熟悉LINUX的基本操作
  11. 全国车辆限行查询api 全国限行限号数据服务
  12. QT所有版本和VS插件下载
  13. jQuery- 跟着李南江学编程
  14. 计算机开机后屏幕和键盘不亮,电脑开机显示器不亮键盘也不亮怎么回事
  15. 阿里云CDN是什么?阿里云CDN配置与购买优惠教程
  16. 【云扩RPA】Excel-ReadingAndWriting
  17. 微信小程序父子组件方法调用方法汇总
  18. Unity解析和读取文本—— txt 文件
  19. LaTeX中定义新命令和环境
  20. 放榜!腾讯iOA、腾讯天幕入选国内数字化可信服务首批认证产品

热门文章

  1. STM32学习记录——声音传感器的使用
  2. Android高阶转场动画-ShareElement完全攻略
  3. 商业智能平台BI 商业智能分析平台 如何选择合适的商业智能平台BI
  4. 国标GB28181 SRS安装配置
  5. uniapp高度自适应
  6. arduino Wemos D 1HT7038调试笔记
  7. 汪峰-怒放的生命 MP3试听,歌词下载
  8. 企业文化对企业战略的意义
  9. Codeforces Round #579 (Div. 3)--Boxers(贪心,排序)
  10. 暴雪和黑客的战争三:黑客的反击