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

给你一个字符串数组 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 由小写英文字母组成

解题思路

使用朴素的解法,枚举word中每个字符作为子字符串的开头,逐一匹配patterns中的字符串,如果匹配成功,则结果加一。使用bool类型的数组记录下patterns中对应下标的元素是否已经成功匹配过,如果某个pattern已经成功匹配了,就不需要后续再进行匹配了

代码

class Solution {public:int numOfStrings(vector<string>& patterns, string word) {int cnt(0);vector<bool> check(patterns.size());for (int i = 0; i < word.size(); ++i) {for(int j=0;j<patterns.size();j++){if (check[j]) continue;if (word.substr(i,patterns[j].size())==patterns[j]){check[j]= true;cnt++;} }}return cnt;}
};

时间复杂度:O(n×∑imi)O(n \times \sum_i m_i)O(n×∑i​mi​),其中 n 为字符串 word\textit{word}word 的长度,mim_imi​为字符串 patterns[i]\textit{patterns}[i]patterns[i] 的长度。
对于 patterns\textit{patterns}patterns中的每个字符串$ \textit{patterns}[i]$,暴力匹配判断是否为 word\textit{word}word子串的时间复杂度为$ O(n \times m_i)$

空间复杂度:O(1)

1967. 作为子字符串出现在单词中的字符串数目相关推荐

  1. LeetCode简单题之作为子字符串出现在单词中的字符串数目

    题目 给你一个字符串数组 patterns 和一个字符串 word ,统计 patterns 中有多少个字符串是 word 的子字符串.返回字符串数目. 子字符串 是字符串中的一个连续字符序列. 示例 ...

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

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

  3. Day8——反转字符串、反转字符串||、替换空格、反转字符串里的单词、左旋字符串

    今天是算法训练的第八天. 目录 前言 一.反转字符串 解题思路: 二.反转字符串|| 题目描述: 解题思路: 三.替换空格 解题思路: 四.反转字符串中的单词 解题思路: 五.左旋转字符串 解题思路: ...

  4. java字符串的拆分_Java中的字符串分割 .

    java中的split函数和js中的split函数不一样. Java中的我们可以利用split把字符串按照指定的分割符进行分割,然后返回字符串数组,下面是string.split的用法实例及注意事项: ...

  5. go语言字符串换行_Go语言中的字符串处理方法示例详解

    1 概述 字符串,string,一串固定长度的字符连接起来的字符集合.Go语言的字符串是使用UTF-8编码的.UTF-8是Unicode的实现方式之一. Go语言原生支持字符串.使用双引号(" ...

  6. Java字符串的重要性_java中的字符串相关知识整理

    字符串就是一系列的字符组合的串,如果写过C/C++的应该就了解,在字符串的操作上会有许多操作的函数与类,用于简化代码的开发.一方面是因为字符串在代码中会频繁用到,另一方面是因为字符串的操作非常麻烦. ...

  7. python将字符串拆分成单词_将字符串拆分为单词和标点符号

    我正在尝试将字符串拆分为单词和标点符号,并将标点符号添加到拆分生成的列表中. 例如: >>> c = "help, me" >>> print ...

  8. python字符串出栈方法_Python 实现字符串反转的9种方法

    在做leetcode的试题中,做到反转整数,就涉及到字符串反转,为了尽可能可以写出更多的方法,于是写下这篇文章 样例:如 a='123456789' 反转成 a='987654321' 第一种方法:使 ...

  9. linux中 字符串,linux内核驱动中对字符串的操作

    size_t strlcat(char *dest, const char *src, size_t count) 功能:把src所指字符串的前count个字符添加到dest结尾处(覆盖dest结尾处 ...

最新文章

  1. tomcat架构分析(概览)【转】
  2. C# 连接 Oracle 的几种方式
  3. WPF实现下拉框带图文和水印
  4. Visual Studio 2017 已知问题 Qamp;amp;A
  5. 电脑中计算机右键管理无法打开,win8系统计算机右键菜单中的管理打不开怎么办...
  6. 阿里云 Ubuntu上的mysql运行sql文件来创建表
  7. 摄影基础知识:等效焦距是什么?
  8. OpenShift 4 之Kafka(2)-配置Kafka Bridge,通过HTTP访问Kafka Topic
  9. Qt自定义委托在QTableView中绘制控件、图片、文字
  10. 位运算和sizeof运算符
  11. unity之制作二维码扫描
  12. u盘恢复软件?windows小工具不要错过!
  13. Java 进口管制限制解除
  14. break 通过自定义标签跳到指定位置
  15. easyUI1.7学习第一天_menu表单
  16. PS:动图加文字(二)
  17. From CodingHorror: The Long, Dismal History of ...
  18. 串口、终端应用程序 API termios
  19. 媒体该如何展示事实之美?
  20. def demo什么意思python_Python之Turtle库Demo案例

热门文章

  1. 1082 射击比赛 (20 分)
  2. oppoJava面试!传智播客java基础案例教程
  3. 【面试必备】java面试题视频讲解
  4. Java面试题及答案,mysql可视化工具
  5. 我想谈谈关于Android面试那些事,一篇文章帮你解答
  6. 详谈P(查准率),R(查全率),F1值
  7. phpstrom+phpstudy+postman
  8. 代码整洁之道,clean code
  9. android——获取ImageView上面显示的图片bitmap对象
  10. javascript/jquery获取图片的原始大小