LeetCode 0567. 字符串的排列
创始人
2025-05-30 04:40:07
0

【LetMeFly】567.字符串的排列

力扣题目链接:https://leetcode.cn/problems/permutation-in-string/

给你两个字符串 s1 和 s2 ,写一个函数来判断 s2 是否包含 s1 的排列。如果是,返回 true ;否则,返回 false

换句话说,s1 的排列之一是 s2子串

 

示例 1:

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

示例 2:

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

 

提示:

  • 1 <= s1.length, s2.length <= 104
  • s1s2 仅包含小写字母

方法一:滑动窗口 / 双指针

题目问的是“s1的排列之一是否为s2的子串”,因此s1中字符出现的顺序不重要。

我们只需要统计s1s1s1中每个字母分别出现了几次,然后在s2中,判断是否存在相同长度的字符串,其中字母的出现次数和s1完全相同。

因此,首先统计s2中前len(s1)个字母是什么,接着不断加上这个区间后面的字符,减去这个区间前面的字符。中途遇到两字符串中字母相同的情况的话,返回true即可

  • 时间复杂度O((len(s1)+len(s2))×C)O((len(s1) + len(s2)) \times C)O((len(s1)+len(s2))×C),其中C=26C = 26C=26
  • 空间复杂度O(C)O(C)O(C)

AC代码

C++

class Solution {
public:bool checkInclusion(string& s1, string& s2) {if (s1.size() > s2.size()) {return false;}vector cnt1(26), cnt2(26);for (char c : s1) {cnt1[c - 'a']++;}for (int i = 0; i < s1.size(); i++) {cnt2[s2[i] - 'a']++;}if (cnt1 == cnt2) {return true;}for (int i = s1.size(); i < s2.size(); i++) {cnt2[s2[i] - 'a']++;cnt2[s2[i - s1.size()] - 'a']--;if (cnt1 == cnt2) {return true;}}return false;}
};

Python

class Solution:def checkInclusion(self, s1: str, s2: str) -> bool:if len(s1) > len(s2):return Falsecnt1 = [0 for _ in range(26)]cnt2 = [0 for _ in range(26)]for c in s1:cnt1[ord(c) - ord('a')] += 1for i in range(len(s1)):cnt2[ord(s2[i]) - ord('a')] += 1if cnt1 == cnt2:return Truefor i in range(len(s1), len(s2)):cnt2[ord(s2[i]) - ord('a')] += 1cnt2[ord(s2[i - len(s1)]) - ord('a')] -= 1if cnt1 == cnt2:return Truereturn False

同步发文于CSDN,原创不易,转载请附上原文链接哦~
Tisfy:https://letmefly.blog.csdn.net/article/details/129636871

相关内容

热门资讯

台州最新学区划分,最新或202... 台州公办小学招生范围按照义务教育免试就近入学原则,市区公办小学实行依街道划片招生。本文为您介绍台州小...
衢州最新学区划分,最新或202... 柯城区最新或2023(历届)学区划分衢江区最新或2023(历届)学区划分
舟山最新学区划分,最新或202... 临城新区】1、南海实验小学片区:新城沈白线以南、千岛路以西区域,以及长峙社区居民子女。2、舟山第二小...
④电子产品拆解分析-太阳能自动... ④电子产品拆解分析-太阳能自动感应灯一、功能介绍二、电路分析以及器件作用1、太阳能控制电路分析2、优...
丽水最新学区划分,最新或202... 根据“就近入学,统筹安排”为原则,公办小学学区划分也已出炉。  市实验学校:丽阳门居委、高井弄居委。...
海南最新学区划分,最新或202... 1.市直属学校招生范围划分小 学招 生 范 围海口市滨海第九小学滨海大道北侧(至海边),港进路和港集...
从ChatGPT到AGI还有多... 1.引子 21年开始在公司负责一个全链路语音的项目,支持公司的Iot设备,...
海口最新学区划分,最新或202... 海口公办小学招生范围按照义务教育免试就近入学原则,市区公办小学实行依街道划片招生。本文为您介绍海口小...
青海最新学区划分,最新或202... 为方便家长和学生们了解自己孩子所就读的小学或是自己孩子的户口究竟在不在想要入读的中学的学区范围内,小...
西宁最新学区划分,最新或202... 西宁公办小学招生范围按照义务教育免试就近入学原则,市区公办小学实行依街道划片招生。本文为您介绍西宁小...
三亚最新学区划分,最新或202... 三亚公办小学招生范围按照义务教育免试就近入学原则,市区公办小学实行依街道划片招生。本文为您介绍三亚小...
贵州最新学区划分,最新或202... 为方便家长和学生们了解自己孩子所就读的小学或是自己孩子的户口究竟在不在想要入读的中学的学区范围内,小...
21- 神经网络模型_超参数搜... 知识要点 fetch_california_housing:加利福尼亚的房价数据&#...
一文了解GPU并行计算CUDA 了解GPU并行计算CUDA一、CUDA和GPU简介二、GPU工作原理与结构2.1、基础GPU架构2....
贵阳最新学区划分,最新或202... 贵阳公办小学招生范围按照义务教育免试就近入学原则,市区公办小学实行依街道划片招生。本文为您介绍贵阳小...
遵义最新学区划分,最新或202... 遵义公办小学招生范围按照义务教育免试就近入学原则,市区公办小学实行依街道划片招生。本文为您介绍遵义小...
安顺最新学区划分,最新或202... 安顺公办小学招生范围按照义务教育免试就近入学原则,市区公办小学实行依街道划片招生。本文为您介绍安顺小...
六盘水最新学区划分,最新或20... 百年教育网小编为您整理了关于六盘水市幼升小学区划分详情的相关信息,希望对您有帮助,想了解更多请继续关...
遍历二叉树线索二叉树 遍历二叉树 遍历定义 顺着某一条搜索路径寻访二叉树中的每一个结点,使得每个节点均被依次...
springboot简介和项目... Java知识点总结:想看的可以从这里进入 目录SpringBoot1、简介和原理1....