leetcode 567. 字符串的排列(滑动窗口)

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

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

示例1:

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

解题思路

和s1每个字符的个数对应相等,则为s1的一个排列。使用数组维护滑动窗口内字符的个数,并且记录已经配对字符的个数,当需要配对字符个数为0,则满足条件。

代码

class Solution {public boolean checkInclusion(String s1, String s2) {int l=0,r=0;HashSet<Integer> objects = new HashSet<>();int k=s1.length(),n=s2.length(); int[] tar=new int[26];int cur=k;for (int i = 0; i < k; i++) {//记录s1字符的个数tar[s1.charAt(i)-'a']++;objects.add(s1.charAt(i)-'a');}while (r<n){if(objects.contains(s2.charAt(r)-'a')){tar[s2.charAt(r)-'a']--;int i = tar[s2.charAt(r) - 'a'];if(i >=0) cur--;//当增加的字符不是多余的字符时,需要配对的字符数才能减1if(cur==0) return true;}r++;while (r-l+1>k){if(objects.contains(s2.charAt(l)-'a')){if(++tar[s2.charAt(l)-'a']>0)//去掉的不是多余的字符时,需要配对的字符数才能加1cur++;}l++;}}return false;}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/391856.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

静态变数和非静态变数_统计资料:了解变数

静态变数和非静态变数Statistics 101: Understanding the different type of variables.统计101&#xff1a;了解变量的不同类型。 As we enter the latter part of the year 2020, it is safe to say that companies utilize data to assist in making business decisions. F…

代码走查和代码审查_如何避免代码审查陷阱降低生产率

代码走查和代码审查Code reviewing is an engineering practice used by many high performing teams. And even though this software practice has many advantages, teams doing code reviews also encounter quite a few code review pitfalls.代码审查是许多高性能团队使用…

Zabbix3.2安装

一、环境 OS: CentOS7.0.1406 Zabbix版本: Zabbix-3.2 下载地址: http://repo.zabbix.com/zabbix/3.2/rhel/7/x86_64/zabbix-release-3.2-1.el7.noarch.rpm MySQL版本: 5.6.37 MySQL: http://repo.mysql.com/mysql-community-release-el7-5.noarch.r…

Warensoft Unity3D通信库使用向导4-SQL SERVER访问组件使用说明

Warensoft Unity3D通信库使用向导4-SQL SERVER访问组件使用说明 (作者:warensoft,有问题请联系warensoft163.com) 在前一节《warensoft unity3d通信库使用向导3-建立WarensoftDataService》中已经说明如何配置Warensoft Data Service&#xff0c;从本节开始&#xff0c;将说明…

01-gt;选中UITableViewCell后,Cell中的UILabel的背景颜色变成透明色

解决方案有两种方法一 -> 新建一个UILabel类, 继承UILabel, 然后重写 setBackgroundColor: 方法, 在这个方法里不做任何操作, 让UILabel的backgroundColor不发生改变.写在最后, 感谢参考的出处:不是谢志伟StackOverflow: UITableViewCell makes labels background clear whe…

leetcode 703. 数据流中的第 K 大元素(堆)

设计一个找到数据流中第 k 大元素的类&#xff08;class&#xff09;。注意是排序后的第 k 大元素&#xff0c;不是第 k 个不同的元素。 请实现 KthLargest 类&#xff1a; KthLargest(int k, int[] nums) 使用整数 k 和整数流 nums 初始化对象。 int add(int val) 将 val 插…

不知道输入何时停止_知道何时停止

不知道输入何时停止In predictive analytics, it can be a tricky thing to know when to stop.在预测分析中&#xff0c;知道何时停止可能是一件棘手的事情。 Unlike many of life’s activities, there’s no definitive finishing line, after which you can say “tick, I…

移动认证_如何在移动设备上实施安全的生物特征认证

移动认证by Kathy Dinh凯西丁(Kathy Dinh) 如何在移动设备上实施安全的生物特征认证 (How to implement secure Biometric Authentication on mobile devices) A quick search for React Native biometric authentication would give you several tutorials. That was the fir…

[Luogu1890]gcd区间

原题链接https://www.luogu.org/problem/show?pid1890 暴力中的暴力。 对于每一组询问l..r&#xff0c;我们先循环暴力枚举l..r中最大值到1&#xff0c;再暴力循环l..r的每一个数&#xff0c;判断前一重循环能否整除后一重&#xff0c;如果全部都能&#xff0c;则可判定它就是…

Android Studio自定义模板 做开发竟然可以如此轻松 后篇

###1.概述 最近有很多人反馈&#xff0c;有些哥们不喜欢看文字性的东西&#xff0c;还有一些哥们根本就不知道我在搞啥子&#xff0c;那么以后我就采用博客加视频的方式&#xff0c;我们可以选择看视频讲解&#xff1a;http://pan.baidu.com/s/1i5uh2uD   内涵段子项目资料及…

ExpressionChangedAfterItHasBeenCheckedError: Expression has changed after it was checked.

ExpressionChangedAfterItHasBeenCheckedError: Expression has changed after it was checked. 解决方案&#xff1a; 异步更新&#xff08;建议使用&#xff09;强制进行变更检测&#xff0c;但是会触发子组件的变更检测&#xff0c;再次导致父组件属性改变Parent.Component.…

leetcode 119. 杨辉三角 II

给定一个非负索引 k&#xff0c;其中 k ≤ 33&#xff0c;返回杨辉三角的第 k 行。 在杨辉三角中&#xff0c;每个数是它左上方和右上方的数的和。 示例: 输入: 3 输出: [1,3,3,1] 解题思路 因为杨辉三角的下层由上一层决定&#xff0c;所以只需要保存上一层的元素&#x…

掌握大数据数据分析师吗?_要掌握您的数据吗? 这就是为什么您应该关心元数据的原因...

掌握大数据数据分析师吗?Either you are a data scientist, a data engineer, or someone enthusiastic about data, understanding your data is one thing you don’t want to overlook. We usually regard data as numbers, texts, or images, but data is more than that.…

react 使用 mobx_如何使用React和MobX状态树构建基于状态的路由器

react 使用 mobxby Miles Till由Miles Till 如何使用React和MobX状态树构建基于状态的路由器 (How to build a state-based router using React and MobX State Tree) Introducing mobx-state-tree-routerMobx状态树路由器简介 If you want to skip ahead to the finished ex…

docker在Centos上的安装

Centos6安装docker 系统&#xff1a;centos6.5 内核&#xff1a;3.10.107-1(已升级)&#xff0c;docker对RHEL/Centos的最低内核支持是2.6.32-431&#xff0c;epel源的docker版本推荐内核为3.10版本。 内核升级可参考&#xff1a;https://www.jslink.org/linux/centos-kernel-u…

Lambda表达式的前世今生

Lambda 表达式 早在 C# 1.0 时&#xff0c;C#中就引入了委托&#xff08;delegate&#xff09;类型的概念。通过使用这个类型&#xff0c;我们可以将函数作为参数进行传递。在某种意义上&#xff0c;委托可理解为一种托管的强类型的函数指针。 通常情况下&#xff0c;使用委托来…

matplotlib柱状图、面积图、直方图、散点图、极坐标图、箱型图

一、柱状图 1.通过obj.plot() 柱状图用bar表示&#xff0c;可通过obj.plot(kindbar)或者obj.plot.bar()生成&#xff1b;在柱状图中添加参数stackedTrue&#xff0c;会形成堆叠图。 fig,axes plt.subplots(2,2,figsize(10,6)) s pd.Series(np.random.randint(0,10,15),index …

微信支付商业版 结算周期_了解商业周期

微信支付商业版 结算周期Economics is an inexact science, finance and investing even more so (some would call them art). But if there’s one thing in economics that you can consistently count on over the long run, it’s the tendency of things to mean revert …

leetcode 448. 找到所有数组中消失的数字

给定一个范围在 1 ≤ a[i] ≤ n ( n 数组大小 ) 的 整型数组&#xff0c;数组中的元素一些出现了两次&#xff0c;另一些只出现一次。 找到所有在 [1, n] 范围之间没有出现在数组中的数字。 您能在不使用额外空间且时间复杂度为O(n)的情况下完成这个任务吗? 你可以假定返回…

前端初学者开发学习视频_初学者学习前端开发的实用指南

前端初学者开发学习视频by Nikita Rudenko通过尼基塔鲁登科(Nikita Rudenko) 初学者学习前端开发的实用指南 (A practical guide to learning front end development for beginners) I started my coding journey in spring 2018, a bit less than one year ago. I earned som…