567. 字符串的排列

LeetCode——567. 字符串的排列 567. 字符串的排列 阅读详情

567. 字符串的排列

题目描述

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

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

示例2:
输入: s1= “ab” s2 = “eidboaoo”
输出: False

注意:
输入的字符串只包含小写字母
两个字符串的长度都在 [1, 10,000] 之间

解题思路

  • 因为无所谓子字符串的排列顺序,所以可以使用打表,统计字符串中字符出现次数
  • 使用滑动窗口,比较两个子字符串是否匹配,不匹配的话,只要移动首尾两个字符
class Solution {
public:
    bool checkInclusion(string s1, string s2) {
        if(s1.length()>s2.length()) return false;
        int book[26]={0};
        int len1=s1.length(),len2=s2.length();
        for(int i=0;i<s1.length();i++){
            book[s1[i]-'a']++;
            book[s2[i]-'a']--;
        }
        bool flag=true;
        for(int i=0;i<26;i++){
            if(book[i]!=0){
                flag=false;
                break;
            }
        }
        if(flag==true){
            return true;
        }
        book[s2[0]-'a']++;
        for(int i=1;i<=len2-len1;i++){
            flag=true;
            book[s2[i+len1-1]-'a']--;
            for(int k=0;k<26;k++){
                if(book[k]!=0){
                    flag=false;
                    break;
                }
            }
            if(flag==true) return true;
            book[s2[i]-'a']++;
        }
        return false;
    }
};
【LeetCode Python实现】567. 字符串的排列(中等) 想要看更加舒服的排版、更加准时的推送 关注公众号“不太灵光的程序员” 每日八点有干货推送,微信随时解答你的疑问 ???????????? 567. 字符串的排列 python3 中等 字符串 字节 给定两个字符串 s1 和 s2,写一个函数来判断 s2 是否包含 s1 的排列。 换句话说,第一个字符串的排列之一是第二个字符串的子串。 示例1: 输入: s1 = “ab” s2 = “eidbaooo” 输出: True 解释: s2 包含 s1 的排列之一 (“ba”). 示例2: 输入: s1= “ab 阅读详情

相关推荐

Java实现 LeetCode 567 字符串的排列(滑动窗口,处理区间内的字符数量)

567. 字符串的排列 给定两个字符串 s1 和 s2,写一个函数来判断 s2 是否包含 s1 的排列。 换句话说,第一个字符串的排列之一是第二个字符串的子串。 示例1: 输入: s1 = “ab” s2 = “eidbaooo” 输出: True 解释: s2 包含 s1 的排列之一 (“ba”). 示例2: 输入: s1= “ab” s2 = “eidboaoo” 输出: False 注意: 输入的字符串只包含小写字母 两个字符串的长度都在 [1, 10,000] 之间 class Solution { public boolean checkInclusion(String s

leetcode:567. 字符串的排列

题目解析 ,因为两个相乘为,所以两个字符最多只能看一遍,就要得出答案,时间复杂度为O(N)str1,str2每种种类必须一样,个数必须一样,顺序可以不一样。这叫做编写次依次尝试固定以s2中的每一个位置l作为左端点开始的len1长度的子串s2[l…l+len1]是否是s2的排列。即可如果固定l做左断点,尝试失败,继续尝试l+1位置位置,【左右边界都不需要回退】,这是滑动窗口的前提。 假设,(1)先使用str1做出一张欠账表 (2)遍历str2,开始花钱 (2.1) 先做出一个窗口来 当前窗口是不是st

OceanStar的博客 849

电拖笔记1电磁学基本知识与定律

电拖学习

qq458629839的博客 1134

leetcode-567. 字符串的排列

字符串的排列是否在另一个字符串中 说明:各个元素个数相同的字符串都是原字符串的排列 滑动窗口: s2保持窗口的大小为s1.size(),记comp表示与原字符串匹配的字符个数,对应字符相等的话comp++。 s2中下标为i-s1.size()的删掉(因为要保持滑动窗口的大小是s1.size()),如果被删掉的字符对应的数量相等,则comp–,submemop[s2[j]]–; 里面一直判断是否comp==numb,如果相等,返回true,遍历完之后返回false; class Solution { p.

大灰狼吃树皮 155

U24时钟信号上升下降沿出现非单调性--简单分析

交换机U24时钟信号上升下降沿出现非单调性--简单分析

qq_45185504的博客 1132

Vivado 2018.3 安装步骤及 license 获取

本文的主要内容是介绍 Vivado 2018.3 版本的安装步骤及其 license 的获取与加载。

西岸贤 4万+

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

使用滑动窗口,实现字符串排列结果是否在某个字符串中

tmax52HZ的博客 616

Android Jetpack 最全面试题及参考答案

要使用 WorkManager 定义一个异步任务,以下是详细步骤。首先,需要创建一个继承自 Worker 类的自定义类,这个类代表了要执行的具体任务逻辑。// 在这里编写具体的任务逻辑,比如从网络下载文件try {在上述代码中,doWork方法就是任务的核心执行逻辑所在,这里模拟了从给定的 URL 下载文件到本地的操作,若下载成功返回,若出现异常则返回。然后,在需要调度任务的地方,比如在某个 Activity 或者 Fragment 中,通过构建 WorkRequest 来安排任务执行。

大模型大数据攻城狮的专栏 1895

LeetCode【567】 字符串的排列

这里写自定义目录标题LeetCode567 字符串的排列 LeetCode567 字符串的排列 题目描述 给定两个字符串 s1 和 s2,写一个函数来判断 s2 是否包含 s1 的排列。 换句话说,第一个字符串的排列之一是第二个字符串的子串。 示例1: 输入: s1 = “ab” s2 = “eidbaooo” 输出: True 解释: s2 包含 s1 的排列之一 (“ba”). 示例2: 输入...

qq422243639的博客 333

4 屏 + 8 摄像头一开,谁在悄悄拖慢你的座舱域控?

如果你觉得座舱卡顿:❌ 别第一反应怪 SoC❌ 别盲目堆算力。

weixin_43199439的博客 148

2026年职业院校技能大赛中职移动应用与开发模块二10套题库开发培训视频(全套)

2026年职业院校技能大赛中职移动应用与开发模块二10套题库开发培训视频(全套)

我是网络安全兼技能大赛工程师,专注网络安全技术学习与技能大赛实战!持续分享最新的技术文章,帮你少走弯路,一起在技术赛道上进步~ 354

leetcode567字符串的排列

leetcode567字符串的排列 给定两个字符串 s1 和 s2,写一个函数来判断 s2 是否包含 s1 的排列。 换句话说,第一个字符串的排列之一是第二个字符串的子串。 示例1: 输入: s1 = “ab” s2 = “eidbaooo” 输出: True 解释: s2 包含 s1 的排列之一 (“ba”). 示例2: 输入: s1= “ab” s2 = “eidboaoo” 输出:...

peony的博客 241

Transformer 面试题及详细答案120道(1-10)-- 基础概念

本文总结了Transformer模型的10个常见面试问题及答案,涵盖了其核心结构、创新点、工作机制等关键知识点。主要内容包括:Transformer的自注意力机制和多头注意力机制创新点,相比RNN/CNN的优势,模型在《Attention Is All You Need》论文中的提出背景,以及Encoder-Decoder协同工作流程等。重点解析了位置编码的作用、长距离依赖处理能力、与传统注意力机制的区别等核心问题。每个问题都给出了简明扼要的专业解答,适合作为Transformer相关面试准备的参考资料。

大剑师兰特的GIS世界 849

LeetCode 567 字符串的排列

LeetCode 567 字符串的排列 题目链接 给定两个字符串 s1 和 s2,写一个函数来判断 s2 是否包含 s1 的排列。 换句话说,第一个字符串的排列之一是第二个字符串的子串。 示例 1: 输入: s1 = "ab" s2 = "eidbaooo" 输出: True 解释: s2 包含 s1 的排列之一 ("ba"). 示例 2: 输入: s1= "ab" s2 = "eidboaoo" 输出: False 这题暴力的复杂度达到了阶乘级别,显示不可取,首先我们考虑如果有两个等长的字母字符串,如

旺崽的博客 2031

Ubuntu22.04安装ros(一键搞定)

然后发现可以一键安装,话不多说,直接终端输入如下指令。回车之后系统会自动安装ros。

m0_47313541的博客 7413

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

C++描述 LeetCode 567. 字符串的排列

C++描述 LeetCode 567. 字符串的排列   大家好,我叫亓官劼(qí guān jié ),在优快云中记录学习的点滴历程,时光荏苒,未来可期,加油~博主目前仅在优快云中写博客,唯一博客更新的地址为:亓官劼的博客 ,同时正在尝试在B站中做一些内容分享,B站主页为: 亓官劼的B站主页 本文原创为亓官劼,请大家支持原创,部分平台一直在恶意盗取博主的文章!!! 若需联系博主,可以联系本人微信:qiguanjie2015 给定两个字符串 s1 和 s2,写一个函数来判断 s2 是否

一起加油 932

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

php直播源码,LeetCode 567 字符串排列

php直播源码,LeetCode 567 字符串排列实现的相关代码 class Solution { public: bool checkInclusion(string s1, string s2) { unordered_map<char, int> need, window; for(char c : s1) need[c]++; int left = 0, right = 0, valid = 0; while(

云豹网络科技 401

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

leetcode 567. 字符串的排列

@(labuladong的算法小抄)[滑动窗口] leetcode 567. 字符串的排列 题目描述 解题思路 参考:labuladong的算法小抄P91 本题实质上是判断s2中是否存在一个连续子串是s1的一种全排列 class Solution { public boolean checkInclusion(String s1, String s2) { /* needs记录需要凑齐的各字符的总数量 */ Map<Character, Integer>

Charison的编程妙妙屋 154

力扣567.字符串的排列

【代码】力扣567.字符串的排列。

Pisasama的博客 329

滑动窗口系列-Leetcode 567. 字符串的排列

文章目录问题描述解题报告实现代码参考资料 问题描述 给定两个字符串 s1 和 s2,写一个函数来判断 s2 是否包含 s1 的排列。 换句话说,第一个字符串的排列之一是第二个字符串的子串。 示例1: 输入: s1 = “ab” s2 = “eidbaooo” 输出: True 解释: s2 包含 s1 的排列之一 (“ba”). 解题报告 本题代码框架与滑动窗口系列-Leetcode 76. 最小覆盖子串非常相似,不解释。 实现代码 class Solution { public: // 判断 s

MD 275

leetcode-567 字符串排列

leetcode-567 字符串的排列 题目描述: 给定两个字符串s1和s2,写一个函数来判断s2是否包含s1的排列。换句话说,第一个字符串的排列之一是第二个字符串的子串。示例1:输入: s1 = "ab" s2 = "eidbaooo"输出: True解释: s2 包含 s1 的排列之一 ("ba").示例2:输入: s1= "ab" s2 = "eidboaoo"输出: Fa...

weixin_30586085的博客 128

Leetcode 567. 字符串的排列 C++

Leetcode 567. 字符串的排列 题目 给定两个字符串 s1 和 s2,写一个函数来判断 s2 是否包含 s1 的排列。 换句话说,第一个字符串的排列之一是第二个字符串的子串。 测试样例 示例1: 输入: s1 = "ab" s2 = "eidbaooo" 输出: True 解释: s2 包含 s1 的排列之一 ("ba"). 示例2: 输入: s1= "ab" s2 = "eidboaoo" 输出: False 注意: 输入的字符串只包含小写字母 两个字符串的长度都在 [1, 10,000]

weixin_43750513的博客 301

Leecode 567. 字符串的排列

原题链接:Leecode 567. 字符串的排列 class Solution { public: bool checkInclusion(string s1, string s2) { int n1=s1.size(); int n2=s2.size(); if(n1>n2) return false; vector<int> v1(26); vector<int> v2(26);

想买很多漂亮衣服但是买不起的博客 279
上一篇: 575. 分糖果
下一篇: LaTex学习笔记
ChenyutingZJU
博客等级 码龄10年 18粉丝 248原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值