LeetCode 567. 字符串的排列

简介: LeetCode 567. 字符串的排列

 567. 字符串的排列

难度中等773

给你两个字符串 s1s2 ,写一个函数来判断 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 仅包含小写字母


    思路:滑动窗口

    时间复杂度:O(m+n),而题目说明进包含小写字母,长度为26,所以近似O(1)

    空间复杂度:O(m+n),而题目说明进包含小写字母,长度为26,所以近似O(1)

    funccheckInclusion(s1string, s2string) bool {
    length1, length2 :=len(s1), len(s2)
    iflength1>length2 {
    returnfalse    }
    vararr1, arr2 [26]int// 先统计s1中出现的“字符+次数”,顺便初始化s2的滑动窗口arr2fori :=0; i<length1; i++ {
    arr1[s1[i]-'a']++arr2[s2[i]-'a']++// arr2表示长度为length1的滑动窗口    }
    // 若在s2中的前length1长度就包含了s1的排列,直接返回trueifarr1==arr2 {
    returntrue    }
    // 继续遍历s2后续部分的子串fori :=length1; i<length2; i++ {
    arr2[s2[i]-'a']++// 右边界扩大一位arr2[s2[i-length1]-'a']--// 左边界缩小一位ifarr1==arr2 {
    returntrue        }
        }
    returnfalse}

    image.gif


    目录
    相关文章
    |
    2月前
    |
    存储 算法
    LeetCode第43题字符串相乘
    LeetCode第43题"字符串相乘"的解题方法,通过使用数组存储乘积并处理进位,避免了字符串转换数字的复杂性,提高了算法效率。
    LeetCode第43题字符串相乘
    |
    2月前
    |
    算法 Java
    LeetCode第28题找出字符串中第一个匹配项的下标
    这篇文章介绍了LeetCode第28题"找出字符串中第一个匹配项的下标"的两种解法:暴力解法和KMP算法,并解释了KMP算法通过构建前缀表来提高字符串搜索的效率。
    LeetCode第28题找出字符串中第一个匹配项的下标
    |
    2月前
    |
    算法
    LeetCode第8题字符串转换整数 (atoi)
    该文章介绍了 LeetCode 第 8 题字符串转换整数 (atoi)的解法,需要对字符串进行格式解析与校验,去除前导空格和处理正负号,通过从高位到低位的计算方式将字符串转换为整数,并处理越界情况。同时总结了这几道题都需要对数字的表示有理解。
    LeetCode第8题字符串转换整数 (atoi)
    |
    2月前
    |
    算法 Java
    LeetCode初级算法题:环形链表+排列硬币+合并两个有序数组java解法
    LeetCode初级算法题:环形链表+排列硬币+合并两个有序数组java解法
    46 0
    |
    4月前
    |
    算法
    力扣每日一题 6/23 字符串/模拟
    力扣每日一题 6/23 字符串/模拟
    31 1
    |
    4月前
    力扣经典150题第四十题:同构字符串
    力扣经典150题第四十题:同构字符串
    29 1
    |
    4月前
    |
    索引
    力扣每日一题 6/27 字符串 贪心
    力扣每日一题 6/27 字符串 贪心
    27 0
    |
    4月前
    |
    Python
    力扣随机一题 模拟+字符串
    力扣随机一题 模拟+字符串
    24 0
    |
    4月前
    力扣每日一题 6/22 字符串/贪心
    力扣每日一题 6/22 字符串/贪心
    23 0
    |
    4月前
    力扣每日一题 6/18 字符串/模拟
    力扣每日一题 6/18 字符串/模拟
    22 0