Java for You 数据结构 字符串排列 | LeetCode 567

字符串排列 | LeetCode 567

题目描述

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

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

​

示例 1:

示例 2:

​

提示:

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

​

题目解析

和子数组/子字符串相关的题目,很可能就是要考察滑动窗口算法,往这方面思考就行了。

这道题,相当于你一个 S 和一个 T,请问你 S 中是否存在一个子串,包含 T 中所有字符且不包含其他字符?

如果这样想的话就和 76. 最小覆盖子串 有些类似了。

​

参考代码

以下为 Java 代码。

​

​

复杂度分析

​

  • 时间复杂度:O(n+m+∣Σ∣),其中 n 是字符串 s1的长度,m 是字符串 s2 的长度,Σ 是字符集,这道题中的字符集是小写字母,∣Σ∣=26。
  • 空间复杂度:O(∣Σ∣)。
本文由 java4u.cn 发布,可自由转载、引用,但需署名作者且注明文章出处(作者:白色蜗牛,出处:java4u.cn)。如转载至微信公众号,请在文末添加作者公众号二维码。 https://java4u.cn/algorithms/3279.html

作者: 蜗牛

二维区域和检索 – 矩阵不可变 | LeetCode 304

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

联系我们

公众号:蜗牛互联网

在线咨询: QQ交谈

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

关注微博
返回顶部