题目

给你一个字符串数组 patterns 和一个字符串 word ,统计 patterns 中有多少个字符串是 word 的子字符串。返回字符串数目。
子字符串 是字符串中的一个连续字符序列。
示例 1:
输入:patterns = [“a”,“abc”,“bc”,“d”], word = “abc”
输出:3
解释:

  • “a” 是 “abc” 的子字符串。
  • “abc” 是 “abc” 的子字符串。
  • “bc” 是 “abc” 的子字符串。
  • “d” 不是 “abc” 的子字符串。
    patterns 中有 3 个字符串作为子字符串出现在 word 中。
    示例 2:
    输入:patterns = [“a”,“b”,“c”], word = “aaaaabbbbb”
    输出:2
    解释:
  • “a” 是 “aaaaabbbbb” 的子字符串。
  • “b” 是 “aaaaabbbbb” 的子字符串。
  • “c” 不是 “aaaaabbbbb” 的字符串。
    patterns 中有 2 个字符串作为子字符串出现在 word 中。
    示例 3:
    输入:patterns = [“a”,“a”,“a”], word = “ab”
    输出:3
    解释:patterns 中的每个字符串都作为子字符串出现在 word “ab” 中。
    提示:
    1 <= patterns.length <= 100
    1 <= patterns[i].length <= 100
    1 <= word.length <= 100
    patterns[i] 和 word 由小写英文字母组成
    来源:力扣(LeetCode)

解题思路

  检查pattern里的元素是否是word的字串,可以使用暴力匹配,也可以使用kmp。

class Solution:def numOfStrings(self, patterns: List[str], word: str) -> int:count=0for i in patterns:if re.search(i,word):count+=1return count


  KMP:

class Solution:def numOfStrings(self, patterns: List[str], word: str) -> int:def KMP(haystack: str, needle: str) -> int:n=len(needle)m=len(haystack)needle=' '+needle  #添加哨兵haystack=' '+haystackNext=[0]*(n+1)i,j=1,0while i<n:  #求next数组if j==0 or needle[i]==needle[j]:i+=1j+=1if needle[i]!=needle[j]:Next[i]=jelse:Next[i]=Next[j]else:j=Next[j]i,j=1,1while i<=m and j<=n: #KMPif j==0 or haystack[i]==needle[j]:i+=1j+=1else:j=Next[j]return i-n-1 if j>n else -1count=0for i in patterns:if KMP(word,i)!=-1:count+=1return count

LeetCode简单题之作为子字符串出现在单词中的字符串数目相关推荐

  1. 1967. 作为子字符串出现在单词中的字符串数目

    1967. 作为子字符串出现在单词中的字符串数目 给你一个字符串数组 patterns 和一个字符串 word ,统计 patterns 中有多少个字符串是 word 的子字符串.返回字符串数目. 子 ...

  2. LeetCode 5843. 作为子字符串出现在单词中的字符串数目

    文章目录 1. 题目 2. 解题 1. 题目 给你一个字符串数组 patterns 和一个字符串 word ,统计 patterns 中有多少个字符串是 word 的子字符串. 返回字符串数目. 子字 ...

  3. LeetCode简单题之两个相同字符之间的最长子字符串

    题目 给你一个字符串 s,请你返回 两个相同字符之间的最长子字符串的长度 ,计算长度时不含这两个字符.如果不存在这样的子字符串,返回 -1 . 子字符串 是字符串中的一个连续字符序列. 示例 1: 输 ...

  4. LeetCode简单题之最长的美好子字符串

    题目 当一个字符串 s 包含的每一种字母的大写和小写形式 同时 出现在 s 中,就称这个字符串 s 是 美好 字符串.比方说,"abABB" 是美好字符串,因为 'A' 和 'a' ...

  5. LeetCode简单题之检查两个字符串数组是否相等

    题目 给你两个字符串数组 word1 和 word2 .如果两个数组表示的字符串相同,返回 true :否则,返回 false . 数组表示的字符串 是由数组中的所有元素 按顺序 连接形成的字符串. ...

  6. LeetCode简单题之字符串中的最大奇数

    题目 给你一个字符串 num ,表示一个大整数.请你在字符串 num 的所有 非空子字符串 中找出 值最大的奇数 ,并以字符串形式返回.如果不存在奇数,则返回一个空字符串 "" . ...

  7. LeetCode简单题之整理字符串

    题目 给你一个由大小写英文字母组成的字符串 s . 一个整理好的字符串中,两个相邻字符 s[i] 和 s[i+1],其中 0<= i <= s.length-2 ,要满足如下条件: 若 s ...

  8. LeetCode简单题之数组中第 K 个独一无二的字符串

    题目 独一无二的字符串 指的是在一个数组中只出现过 一次 的字符串. 给你一个字符串数组 arr 和一个整数 k ,请你返回 arr 中第 k 个 独一无二的字符串 .如果 少于 k 个独一无二的字符 ...

  9. LeetCode简单题之找出两数组的不同

    题目 给你两个下标从 0 开始的整数数组 nums1 和 nums2 ,请你返回一个长度为 2 的列表 answer ,其中: answer[0] 是 nums1 中所有 不 存在于 nums2 中的 ...

最新文章

  1. R语言ggplot2可视化2d密度图:可视化二维密度图并将两个二维密度图重叠起来、Overlay two ggplot2 stat_density2d plots
  2. 设计模式C#实现(十五)——命令模式
  3. VC 在CStatic控件上绘图
  4. oracle的java路径,oracle学习----访问路径
  5. 【Python】聊聊Pandas的前世今生
  6. python一个富翁试图与陌生人做一笔生意_VB实验报告一
  7. UVa 10986 - Sending email
  8. python里isalpha_Python 2.7中isalpha 不支持 unicode
  9. 【EasyAR学习】平面追踪、表面跟踪和运动跟踪、稀疏空间地图
  10. 苹果iphone5港版美版与高仿耳机鉴别方法
  11. 微型计算机的硬件系统主要核心软件,计算机硬件系统最核心的是什么
  12. 大数据毕设选题 - 京东消费数据分析与可视化(python 大数据 机器学习)
  13. 如何出一幅具有三维立体显示的地形示意图
  14. 华三交换机配置ntp server
  15. Unity-日志工具
  16. 简单的网页制作期末作业——电影泰坦尼克号(4页)
  17. 系统分析与设计期末课程总结
  18. 31个爱情原则让你受用终生
  19. 我是一个下「笨功夫」的人
  20. 3--新唐nuc980 kernel支持jffs2, Jffs2文件系统制作, 内核挂载jffs2, uboot网口设置,uboot支持tftp

热门文章

  1. 伍六七带你学算法 入门篇 ——最大子序和
  2. spring IOC创建对象方式
  3. view(*args)改变张量的大小和形状_pytorch reshape numpy
  4. ZooKeeper简单使用
  5. GPU上的基本线性代数
  6. Yolov4性能分析(下)
  7. Python分析离散心率信号(中)
  8. 人脸标记检测:ICCV2019论文解析
  9. Android中Handler消息机制
  10. python 把列表或者元组转成集合