题目:

给定两个字符串 s1 和 s2,写一个函数来判断 s2 是否包含 s1 的排列。

换句话说,第一个字符串的排列之一是第二个字符串的子串。

示例1:

输入: s1 = "ab" s2 = "eidbaooo"输出: True解释: s2 包含 s1 的排列之一 ("ba").

示例2:

输入: s1= "ab" s2 = "eidboaoo"输出: False

注意:

  1. 输入的字符串只包含小写字母

  2. 两个字符串的长度都在 [1, 10,000] 之间

解题思路:

  1. s1的排列有很多种,只需要找到s2中的一个字符串片段,且该片段满足每个字母的数量与s1对应字母的数量相等的条件。

  2. 统计字符串片段和s1中字母的数量,判断字符串片段和s1中对应的字母数量是否相等。

  3. 遍历字符串s2,不断以s1的长度来截取字符串片段,然后做 思路2 中的判断。

Python代码:

class Solution:    def checkInclusion(self, s1: str, s2: str) -> bool:        index = 0        s1_dict = collections.Counter(s1)        while index <= (len(s2) - len(s1)):            # 截取长度为len(s1)的字符串片段            s_dict = collections.Counter(s2[index:(index + len(s1))])            for char, num in s1_dict.items():                if s_dict.get(char) != num:                    break            else:                return True            index += 1        return False

--END--

char截取字符串_字符串的排列(滑动窗口)相关推荐

  1. leetcode 567. Permutation in String 字符串的排列 滑动窗口法

    题目 给定两个字符串 s1 和 s2,写一个函数来判断 s2 是否包含 s1 的排列.换句话说,第一个字符串的排列之一是第二个字符串的子串. 示例1:输入: s1 = "ab" s ...

  2. LeetCode 567. 字符串的排列 (滑动窗口哈希表)

    567. 字符串的排列 题意: 第一个字符串的排列之一是第二个字符串的子串 即判断第二个字符串是否包含某个子串,这个子串的字符以及字符数量要求与第一个字符串相同 解法1 (暴力法) 按照第一个字符串的 ...

  3. 翁恺老师C语言学习笔记(十一)字符串_字符串常量

    字符串常量 char* s = "Hello,world!" 我们先看一段代码 #include<stdio.h>int main(void) {char *s = & ...

  4. python数字转字符串_字符串转换与格式化

    字符串转换与格式化¶ 用于数字转换和格式化字符串输出的函数 int PyOS_snprintf(char*str, size_tsize, const char*format, ...)¶ 根据格式字 ...

  5. 判断字符串是否为回文字符串_字符串文字

    判断字符串是否为回文字符串 String objects hold ordered sequences of bytes, typically characters, usually to form ...

  6. uiautomation遍历windows所有窗口_万字长文!滑动窗口看这篇就够了!

    大家好,我是小浩.今天是小浩算法 "365刷题计划" 滑动窗口系列 - 整合篇.之前给大家讲解过一些滑动窗口的题目,但未作系统整理. 所以我就出了这个整合合集,整合工作中除了保留原 ...

  7. cstring判断是否包含子串_最长子串-滑动窗口

    接下来我会找出LeetCode中一些比较有代表性的题,带来它的算法和讲解 很多题目,使用一般的暴力算法很多都能解出来,但时间复杂度可能是 O(n3),会比最优解慢很多,尤其是数据量变大时. 在我们实际 ...

  8. 怎样在vs中监视char*字符串_字符串指针数据类型

    一.前言 在实际开发中,特别是芯片开发中,例如智能传感器芯片,经常直接使用C语言指针数据类型来操作寄存器.那么字符串指针就是我们常见的操作. C语言没有单独的字符串对象,它是通过数组的形式来表示字符串 ...

  9. flutter截取字符串_字符串截取的常用方法

    string str = "123abc456";        int i = 3; 1. 取字符串的前i个字符 str=str.Substring(0,i); 2. 去掉字符串 ...

最新文章

  1. 中key的用途_Micro Focus Operations Bridge Manager中的多个(RCE)漏洞
  2. Educational Codeforces Round 77 (Rated for Div. 2)A~C[数学场]
  3. 汇编语言串指令经典题目
  4. 从css样式表中抽取元素尺寸
  5. 2008年12月31日,博客园开博
  6. 计算机错误符号,解析Excel中常见的错误符号以及解决方法
  7. SpringMVC HandlerMethodReturnValueHandler扩展
  8. 学习web前端开发大半年,迷茫了,感觉什么都没学会怎么破?
  9. Mac OS安装mysql教程
  10. Docker最全教程之使用Tencent Hub来完成CI(九)
  11. Java笔记(1)黑马刘意_Java入门_2019_idea版
  12. 借助Sci-Hub免费下载外文文献
  13. 青龙面板库 大全(9.6更新)
  14. python教程十一 元组
  15. 基于Qt/C++的音频转换程序,pcm互转wav,位数转换
  16. [BZOJ1123][POI2008]BLO(tarjan求点双+树形dp)
  17. 触发器详解——(二)JK触发器
  18. 天下国家之事,败于小人者十一,败于君子者十九(转)
  19. 2017百度实习生招聘编程题
  20. PHP数组排序函数 ksort() 、krsort

热门文章

  1. .NET的一点历史故事:擦肩而过的机遇
  2. 后端架构高可用可伸缩讲解之高可用
  3. C语言试题二十五之编写一个函数float function(double h),函数的功能使对变量h中的值保留2位小数,并对第三位进行四舍五入(规定h中的值位正数)。
  4. Android之解决toolbar里面显示返回按钮图片太大和没有水平居中的问题
  5. C和指针之动态内存分配(读取范围在1和标准输入读取的size之前每个数据出现的次数)
  6. linux之fdisk查看分区和mkfs.ext3删除分区和mount挂载和e2label添加卷标使用总结
  7. Android之React Native 中组件的生命周期
  8. 【前端就业课 第一阶段】HTML5 零基础到实战(四)伪类与伪元素
  9. (八)python3 只需3小时带你轻松入门——List 与 dict 的常用操作
  10. (七)python3 只需3小时带你轻松入门——List与dict