
【滑动窗口法】—— 567. 字符串的排列
发布日期:2021-05-07 21:20:29
浏览次数:21
分类:精选文章
本文共 945 字,大约阅读时间需要 3 分钟。
题目描述
给定两个字符串 s1 和 s2,写一个函数来判断 s2 是否包含 s1 的排列。
换句话说,第一个字符串的排列之一是第二个字符串的子串。
示例 1:
输入: s1 = “ab” s2 = “eidbaooo”
输出: True 解释: s2 包含 s1 的排列之一 (“ba”). 示例 2:输入: s1= “ab” s2 = “eidboaoo”
输出: False解题思路
class Solution_567 { public boolean checkInclusion(String s1, String s2) { int n = s1.length(), m = s2.length(); if (n > m) { return false; } int[] cnt1 = new int[26]; int[] cnt2 = new int[26]; for (int i = 0; i < n; ++i) { ++cnt1[s1.charAt(i) - 'a']; ++cnt2[s2.charAt(i) - 'a']; } //两个字符串完全相等 if (Arrays.equals(cnt1, cnt2)) { return true; } for (int i = n; i < m; ++i) { //滑动窗口,保持窗口的大小始终是2 ++cnt2[s2.charAt(i) - 'a']; --cnt2[s2.charAt(i - n) - 'a']; if (Arrays.equals(cnt1, cnt2)) { return true; } } return false; }}
发表评论
最新留言
能坚持,总会有不一样的收获!
[***.219.124.196]2025年03月21日 17时20分39秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
px4调试bug--添加mavlink_log_info信息
2021-05-08
redis向数组中添加值并查看数组长度
2021-05-08
python3基础梳理11python中模块和包
2021-05-08
JS编写一个函数,计算三个不同数字的大小,按从小到大顺序打印(穷举法)
2021-05-08
mybatis中like的注意
2021-05-08
sqlplus的基本使用
2021-05-08
oracle删除表重复数据
2021-05-08
Oracle删除主表数据
2021-05-08
js中两种定时器,setTimeout和setInterval实现验证码发送
2021-05-08
Oracle常用SQL
2021-05-08
技术美术面试问题整理
2021-05-08
Redis分布式锁原理
2021-05-08
C++学习记录 五、C++提高编程(2)
2021-05-08
自学linux毕业shell面试题
2021-05-08
4 Java 访问控制符号的范围
2021-05-08
第9章 - 有没有替代原因(检验证据)
2021-05-08
VUE3(八)setup与ref函数
2021-05-08
Vue之Element标签页保留用户操作缓存。
2021-05-08
智能合约开发实践(1)
2021-05-08