美文网首页
567. 字符串的排列(Python)

567. 字符串的排列(Python)

作者: 玖月晴 | 来源:发表于2020-11-13 10:55 被阅读0次

题目

难度:★★★☆☆
类型:字符串
方法:滑动窗口

力扣链接请移步本题传送门
更多力扣中等题的解决方案请移步力扣中等题目录

给定两个字符串 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解决方案,请移步力扣中等题解析

相关文章

  • 2021.2.10每日一题

    567. 字符串的排列[https://leetcode-cn.com/problems/permutation-...

  • 567. 字符串的排列(Python)

    题目 难度:★★★☆☆类型:字符串方法:滑动窗口 力扣链接请移步本题传送门[https://leetcode-cn...

  • 567. 字符串的排列

    567. 字符串的排列 问题 给定两个字符串 和 ,写一个函数来判断 是否包含 的排列。换句话说,第一个字符串...

  • 567. 字符串的排列

    给定两个字符串 s1 和 s2,写一个函数来判断 s2 是否包含 s1 的排列。 换句话说,第一个字符串的排列之一...

  • 567. 字符串的排列

    给你两个字符串 s1 和 s2 ,写一个函数来判断 s2 是否包含 s1 的排列。如果是,返回 true ;否则,...

  • 【LeetCode】567. 字符串的排列(滑动窗口)

    简书内代码已上传GitHub:点击我 去GitHub查看代码这道题和 最小覆盖子串 思路基本一样 题目: 给定两个...

  • WIKI | 记一次Python 序列切片操作

    Python 摘:在Python中,序列类型包括字符串、元组、列表。序列就是元素有序排列。通过下标访问,Pytho...

  • Python自学笔记Day5

    Python自学笔记——Day5 字符串介绍 1. 什么是字符串 表示或记录文本信息的一种形式 字符串排列有序,序...

  • python-字符串、列表、元组、字典

    序列:在python当中,序列就是一组按照顺序排列的值【数据集合】 python中,有三种内置的序列类型:字符串、...

  • Python实现字符串的排列

    题目描述 输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所...

网友评论

      本文标题:567. 字符串的排列(Python)

      本文链接:https://www.haomeiwen.com/subject/modvbktx.html