题目描述:

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

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

示例1:

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

示例2:

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

思路分析:

看到子串就想到滑动窗口,先试着用滑动窗口解题。

直接套用labuladong的算法小抄的滑动窗口模板:

class Solution {public boolean checkInclusion(String s1, String s2) {int len=s2.length();HashMap<Character,Integer> need=new HashMap<>();HashMap<Character,Integer> window=new HashMap<>();for(char c: s1.toCharArray()){need.put(c,need.getOrDefault(c,0)+1);}int left=0,right=0,res=0;int valid=0;while(right<len){char r=s2.charAt(right);right++;if(need.containsKey(r)){window.put(r,window.getOrDefault(r,0) + 1);if(need.get(r).equals(window.get(r))){valid++;}}while(right-left>=s1.length()){if(valid==need.size()){return true;}char l=s2.charAt(left);left++;if(need.containsKey(l)){if(window.get(l).equals(need.get(l))){valid--;}window.put(l,window.getOrDefault(l,0)-1);}}}return false;}
}

LeetCode-567:字符串的排列相关推荐

  1. LeetCode 567. 字符串的排列 (滑动窗口哈希表)

    567. 字符串的排列 题意: 第一个字符串的排列之一是第二个字符串的子串 即判断第二个字符串是否包含某个子串,这个子串的字符以及字符数量要求与第一个字符串相同 解法1 (暴力法) 按照第一个字符串的 ...

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

    给定两个字符串 s1 和 s2,写一个函数来判断 s2 是否包含 s1 的排列. 换句话说,第一个字符串的排列之一是第二个字符串的子串. 示例1: 输入: s1 = "ab" s2 ...

  3. LeetCode242/567.字符串的排列:有效的字母异位词(Kotlin语言)

    LeetCode242.有效的字母异位词 题目描述 给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词. 示例 1: 输入: s = "anagram" ...

  4. 567.字符串的排列

    难度:中等 目录 一.问题描述 二.解题思路 1.思路 三.解题 1.代码实现 2.时间复杂度 and 空间复杂度 一.问题描述 这里直接采用LeetCode上面的问题描述. 给你两个字符串 s1 和 ...

  5. 文巾解题 567. 字符串的排列

    1 题目描述 2 解题思路:滑动窗口: 因为不管排列怎么排,s1字符串中的各个字母的个数是不变的.所以我们可以先设定一个大小和s1一样的滑动窗口.然后对s1和滑动窗口扫到的s2部分进行排序.如果而这一 ...

  6. leetcode 567. Permutation in String 字符串的排列 滑动窗口法

    题目 给定两个字符串 s1 和 s2,写一个函数来判断 s2 是否包含 s1 的排列.换句话说,第一个字符串的排列之一是第二个字符串的子串. 示例1:输入: s1 = "ab" s ...

  7. 【LeetCode】剑指 Offer 38. 字符串的排列

    [LeetCode]剑指 Offer 38. 字符串的排列 文章目录 [LeetCode]剑指 Offer 38. 字符串的排列 package offer;import java.util.Hash ...

  8. 【字符串全排列】LeetCode 567. Permutation in String

    [字符串全排列]LeetCode 567. Permutation in String Solution1:[超时,未能AC] 得到s1的所有全排列组合,然后在s2中查找s1的全排列集合 因为超时,未 ...

  9. LeetCode——剑指 Offer 38. 字符串的排列

    剑指 Offer 38. 字符串的排列 题目 输入一个字符串,打印出该字符串中字符的所有排列.你可以以任意顺序返回这个字符串数组,但里面不能有重复元素.示例:输入:s = "abc" ...

  10. 【亡羊补牢】挑战数据结构与算法 第18期 LeetCode 面试题 08.08. 有重复字符串的排列组合(递归与回溯)

    仰望星空的人,不应该被嘲笑 题目描述 有重复字符串的排列组合.编写一种方法,计算某字符串的所有排列组合. 示例1: 输入:S = "qqe"输出:["eqq", ...

最新文章

  1. spring定时每天早上八点_Spring Boot教程(13) – 简单定时任务
  2. 英特尔大地震!解雇首席工程官,7纳米延期,或面临集体诉讼……
  3. JSON快速转C#实体类
  4. php和mysql的概述_PHP的MySQL扩展:MySQL数据库概述_MySQL
  5. elon函数_Neuroink Elon麝香制造中的灾难
  6. python jieba 文本相似度_文本相似度分析(基于jieba和gensim)
  7. 关于 richedit 控件
  8. 系列10—消息中间件
  9. 如何解决设置虚拟服务器不生效,nginx虚拟主机的配置不生效
  10. UE4 iOS游戏开发
  11. Node.js 抓取电影天堂新上电影节目单及ftp链接
  12. 代码里经常看见idle,是什么意思
  13. 使用WMI编程获取主机硬件信息(CPU_ID,硬盘、主板、BIOS序列号,Mac地址)
  14. 如何在Android Studio中获取SHA-1指纹证书以获得调试模式?
  15. Mppt光伏最大功率点跟踪控制matlab仿真
  16. 图解linux文件系统,linux系统的基本构成和文件系统的结构(配图解)
  17. MATLAB代码:基于分时电价条件下家庭能量管理策略研究
  18. python 爬取学信网登录页面
  19. Direct2D 介绍
  20. 【SSM框架】MyBatis

热门文章

  1. Virtualenv 相关
  2. 2017-2018-1 20155227 《信息安全系统设计基础》第四周学习总结
  3. MySQL特殊语法---replace into
  4. 比那 施氏食狮史 还要强的文章
  5. jsp是在html里面嵌入哪种代码?_再说嵌入式入门
  6. 资源放送丨《 先睹为快!Oracle 20c新特性解析》PPT视频
  7. 参会指南丨3分钟带你玩转2019数据技术嘉年华!
  8. Open Harmony移植:build lite编译构建过程
  9. 2种图像增强方法:图像点运算和图像灰度化处理
  10. “1天一朵云”,这是如何做到的?