字符串的排列

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

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

    • 示例1:

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

    • 输入: s1= "ab" s2 = "eidboaoo"

    • 输出: False

    • 注意:

      • 输入的字符串只包含小写字母
      • 两个字符串的长度都在 [1, 10,000] 之间
  • 链接:https://leetcode-cn.com/problems/permutation-in-string


  • 解题思路:
  1. 先计算s1字母的排列组合,用哈希表存储
  2. 利用滑动窗口思想,遍历s2中与s1同等长度的字符,计算该字符字母的排列组合
  3. 比较两个字符的哈希表是否相同
  • Python版
class Solution:
    def checkInclusion(self, s1: str, s2: str) -> bool:
        import collections
        count_dict = collections.Counter(s1)
        m = len(s1)
        i = 0
        j = m - 1
        while j < len(s2):
            if collections.Counter(s2[i:j+1]) == count_dict:
                return True
            i += 1
            j += 1
        return False
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容