题目

难度:★★★☆☆

类型:字符串

方法:滑动窗口

力扣链接请移步本题传送门

更多力扣中等题的解决方案请移步力扣中等题目录

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

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

示例1:

输入: s1 = "ab" s2 = "eidbaooo"

输出: True

解释: s2 包含 s1 的排列之一 ("ba").

示例2:

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

输出: False

注意:

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

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

解答

首先我们回顾一下排列的定义。从一个数量为n的集合中抽取出来m个样本,按照任意顺序摆放起来,就可以称为原始集合的一个排列,如果m=n,那么这种排列就是原始集合的一个全排列。全排列有一个特性,即全排列中任意一种情况的样本,都可以在原始集合中找到,除了顺序之外略有差别,每个样本的出现次数与原始集合完全一致。

对于这道题目,为了找到长串s2中是否包含子串s1的全排列,只需要指定一个长度与段串s1一致的窗口,滑动窗口并统计窗口中各个元素出现次数是否与短串s1完全一致,如果一致,表明窗口中的子串与s1互为全排列。根据此可解决该问题。

class Solution:

def checkInclusion(self, s1: str, s2: str) -> bool:

if len(s1) > len(s2):

return False

c1 = {chr(i): 0 for i in range(97, 97+26)}

cur = c1.copy()

for a in s1:

c1[a] += 1

for i in range(len(s2)):

cur[s2[i]] += 1

if i >= len(s1):

cur[s2[i - len(s1)]] -= 1

if c1 == cur:

return True

return False

如有疑问或建议,欢迎评论区留言~

有关更多力扣中等题的python解决方案,请移步力扣中等题解析

python输入字符串从大到小排列_567. 字符串的排列(Python)相关推荐

  1. python选择排序从大到小_经典排序算法和Python详解之(一)选择排序和二元选择排序...

    本文源自微信公众号[Python编程和深度学习]原文链接:经典排序算法和Python详解之(一)选择排序和二元选择排序,欢迎扫码关注鸭! 扫它!扫它!扫它 排序算法是<数据结构与算法>中最 ...

  2. python选择排序从大到小_Python实现选择排序

    一.选择排序简介 选择排序(Selection sort)是一种简单直观的排序算法.选择排序首先从待排序列表中找到最小(大)的元素,存放到元素列表的起始位置(与起始位置进行交换),作为已排序序列,第一 ...

  3. python 输入文件名查找_python 查找文件名包含指定字符串的方法

    编写一个程序,能在当前目录以及当前目录的所有子目录下查找文件名包含指定字符串的文件,并打印出绝对路径. import os class searchfile(object): def __init__ ...

  4. hive sort_array实现字符串从大到小排序的方法

    sort_array默认是从小到大排序的,为了实现能够从大到小排序,需要做两个变换: (1)将字符串映射成数字:ROW_NUMBER() OVER(PARTITION BY user_id, cate ...

  5. Python操作窗口变大变小

    """ 打开notepad,使之变大变小 """ import win32con import win32gui# 参2:要打开的notep ...

  6. 大数据和python哪个好_大数据语言之争:Java和python哪个好?

    IT技术领域,编程语言不少,但是大家的目光,基本上都是盯着排名前几的热门语言的,近几年的热点,Java和Python之间也免不了一场争议.一个是IT行业常青树,一个是大数据带动热度快速上升的语言.那么 ...

  7. python小白逆袭大神_python小白逆天(3),Python,小白逆袭,大神,三

    Python小白逆袭大神 作业三 作业: 对<青春有你2>对选手体重分布进行可视化,绘制饼状图 这个作业是根据第二天爬取获得的json文件进行数据的处理课可视化. with open('d ...

  8. python输入字符串从大到小排列_791. 自定义字符串排序(Python)

    难度:★★☆☆☆ 类型:字符串 方法:无 力扣链接请移步本题传送门 更多力扣中等题的解决方案请移步力扣中等题目录 题目 字符串S和 T 只包含小写字符.在S中,所有字符只会出现一次. S 已经根据某种 ...

  9. python由大到小排序_python怎么从小到大排列

    python提供了对list排序两种方法 1.使用list内置函数sort排序list.sort(key=None,reverse=False) eg:In [57]: l=[27,47,3,42,1 ...

最新文章

  1. 阿里云推荐码:8N6TBT
  2. ubuntu多版本python和pip切换
  3. Ubuntu升级python版本
  4. java中容易被忽视的基本概念
  5. LeetCode 中级 - 第k个排列(60)
  6. My first essay
  7. idea快捷键失效,快捷键不能用
  8. 如何关闭AutoCAD2016上的“开始”界面、打开CAD就自动新建一个drawing1、“文件”选项卡?
  9. 如何解决tomcat提示文件被锁定
  10. 教你电脑系统如何深度清理c盘空间
  11. 云效搭建流水线实现自动化构建部署
  12. 万能素材库_2016万能高考作文素材大全
  13. casual Convolution 和 dilated Convolution
  14. 2019-02-24 经济 金融 投资 理财相关书籍推荐
  15. iPhoneXR为最畅销iPhone难解外界对苹果的担忧
  16. 飞思卡尔16位单片机(十五)—— 如何批量烧写芯片
  17. 【PIL案例精讲】252行Python代码制作透明背景的电子印章
  18. if函数多个条件php,EXCEL中IF函数多条件判断怎么写
  19. Unity 3D 游戏脚本 多脚本管理
  20. vue通过笛卡儿积实现sku库存配置

热门文章

  1. css3 3d旋转兼容模式下,前端CSS3: 3D旋转的问题 (请水神和毒舌放过)
  2. android预加载布局,Android 懒加载优化
  3. 12c集群日志位置_Oracle 19C RAC 集群日志位置变化
  4. oracle 11.2.0.4 mos,【翻译自mos文章】在RHEL7 or OEL7上安装oracle 11.2.0.4 db时的
  5. getmenuiteminfo无法读取内存_笔记本内存加装教程,看完包会!为了这篇文章,我把电脑都拆了!...
  6. 【Python教程】两种方法教你拆分含有多种分隔符的字符串
  7. Python爬虫入门必学知识:Requests的三种参数请求方式
  8. python对字符串(内嵌的字典)转为字典
  9. Python初学的几个迷惑点
  10. Python超详细的字符串用法大全