leetcode-567. Permutation in String字符串排列_turbo624的博客-程序员秘密

技术标签: LeetCode  

Permutation in String

题目

Given two strings s1 and s2, write a function to return true if s2 contains the permutation of s1. In other words, one of the first string’s permutations is the substring of the second string.

Example 1:

Input: s1 = “ab” s2 = “eidbaooo”
Output: True
Explanation: s2 contains one permutation of s1 (“ba”).

Example 2:

Input:s1= “ab” s2 = “eidboaoo”
Output: False

Constraints:

The input strings only contain lower case letters.
The length of both given strings is in range [1, 10,000].

滑动窗口

使用前后指针表示窗口。
需要注意的是,l 缩小窗口只需窗口大小大于 s1.size() ,而且当发现 valid == len(need)时,就说明窗口中就是一个合法的排列,应立即返回 true。

python代码

class Solution(object):
    def checkInclusion(self, s1, s2):
        """
        :type s1: str
        :type s2: str
        :rtype: bool
        """
        need = dict()
        windows = dict()
        for i in s1:
            if i in need:
                need[i] += 1
            else:
                need[i] = 1
        for i in s2:
            windows[i] = 0
        l ,r = 0,0
        valid = 0
        while r < len(s2):
            c = s2[r]
            r += 1
            if c in need:
                windows[c] += 1
                if windows[c] == need[c]:
                    valid += 1
            while r - l >= len(s1):
                if valid == len(need):
                    return True
                d = s2[l]
                l += 1
                if d in need:
                    if windows[d] == need[d]:
                        valid -= 1
                    windows[d] -= 1
        return False
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_44110891/article/details/106789337

智能推荐

【观察】打造智能决策“新引擎”,杉数科技勇闯“无人区”_申耀的科技观察的博客-程序员秘密

申耀的科技观察读懂科技,赢取未来!毫无疑问,在中国科技的产业发展中,底层基础软件一直是一大“短板”,特别在求解器软件领域,不仅技术门槛较高、相关人才也极为稀少,同时全球求解器市场更被IBM...

Minkowski sums and differences闵可夫斯基和与差_minkowski 和差运算_weixin_42115831的博客-程序员秘密

Minkowski sums and differencesThere are many ways to do collision detection, but a fairly general one is Minkowski differences. The idea is that you do a binary operation on two shapes to get a new s...

C#学习之--线程Thread_belive_in的博客-程序员秘密

使用Thread类 开启线程例子例子1static void Main(string[] args)        {            //第一种方式            Thread t = new Thread(DownLoadFile);            t.Start();     Console.WriteLine("Main"); 

IDEA配置热部署Devtools(微服务开发必备)_鱼找水需要时间的博客-程序员秘密

1. 在聚合父类总工程中引入pom &lt;build&gt; &lt;plugins&gt; &lt;plugin&gt; &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt; &lt;artifactId&gt;spring-boot-maven-plugin&lt;/artifactId&gt; &lt;co

MyBatis实现关联表查询_mybatis assi_朋吧那个神腻的博客-程序员秘密

一:实现一对一关联 MyBatis如何使用关联表查询: 1.创建表和数据(我们假设创建一张教师表和班级表,假设一个老师带一个班,那么老师和班级就是一对一的关系)便之间的关系如下: 2.定义实体类 Class实体类: Teacher实体类: 2.定义映射文件: 3.再将应用文件中注册映射文件 4.定义单元测试编码: MyBatis...

C++迭代器iterator_LAY*的博客-程序员秘密

1、迭代器的概念迭代器iterator是C++STL的组件之一,作用是用来遍历容器,而且是通用的遍历容器的方式。说到C++STL组件就不得不提一下C++STL的六大组件了,它们分别是:顺序/无序容器、关联容器、容器适配器、迭代器、函数对象、泛型算法。经典的迭代器遍历容器的代码如下:Vector&lt;int&gt;::iterator it = vec1 .begin(); for (;...

随便推点

[动态规划 | 二分 + 贪心] LeetCode 300. 最长递增子序列_用二分算法可以输出最长递增子序列_心一QAQ的博客-程序员秘密

300. 最长递增子序列给你一个整数数组 nums ,找到其中最长严格递增子序列的长度。子序列是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序。例如,[3,6,2,7] 是数组 [0,3,1,6,2,2,7] 的子序列。示例 1:输入:nums = [10,9,2,5,3,7,101,18]输出:4解释:最长递增子序列是 [2,3,7,101],因此长度为 4 。示例 2:输入:nums = [0,1,0,3,2,3]输出:4示例 3:输入:nums

OpenCV——图像形态学操作_我有一個夢想的博客-程序员秘密

图像形态学腐蚀可以将细小的噪声区域去除,但是会将图像主要区域的面积缩小,造成主要区域的形状发生改变;图像形态学膨胀可以扩充每一个区域的面积,填充较小的空洞,但是同样会增加噪声的面积。根据两者的特性将图像腐蚀和膨胀适当的结合,便可以既去除图像中的噪声,又不缩小图像中主要区域的面积;既填充了较小的空洞,又不增加噪声所占的面积。...

Android使用walle多渠道打包_SXS120730的博客-程序员秘密

转载:https://github.com/Meituan-Dianping/walleWalle瓦力,Android Signature V2 Scheme签名下的新一代渠道包打包神器瓦力通过在Apk中的APK Signature Block区块添加自定义的渠道信息来生成渠道包,从而提高了渠道包生成效率,可以作为单机工具来使用,也可以部署在HTTP服务器上来实时处理渠道包Apk的升级网络请求。Q...

内存储器和cpu一起构成了计算机,计算机系统的组成_申礼国的博客-程序员秘密

声音简介㈠计算机硬件系统的组成任何一台计算机的硬件系统都是由五大部分组成,分别为运算器、控制器、存储器、输入设备和输出设备。(1)“存储程序”工作原理计算机能够自动完成运算或处理过程的基础是“存储程序”工作原理。“存储程序”工作原理是美国匈牙利科学家冯·诺依曼提出来的,故称为冯·诺依曼原理,其基本思想是存储程序和程序控制。(2)计算机硬件系统的组成。1.运算器(ALU)运算器又称算术逻辑单元,是计...

推荐给初学LSTM或者懂个大概却不完全懂的人_lstm神经元个数选择_trayfour的博客-程序员秘密

个人认为下面这篇博文非常适合初学或者学的很浅的朋友。 转自http://www.jianshu.com/p/9dc9f41f0b29经常接触LSTM,GRU,RNN这些模型,对于LSTM的印象只是知道它用来解决梯度消失梯度爆炸问题,对于长距离的句子的学习效果不好的问题,而且大概知道里面是加了一些参数,加了门单元来选择忘记和记住一些信息。但是具体公式没有推过,所以理解的不够深。但是上面这篇长博文,作

android锁机病毒源代码,Android 锁机样本母体分析_weixin_39666550的博客-程序员秘密

本帖最后由 莫问刀 于 2018-8-17 09:49 编辑--------------------------------------------------------------------------------------------------------------------------------------------------------------------------...

推荐文章

热门文章

相关标签