美文网首页
字符串的排列

字符串的排列

作者: MrHitchcock | 来源:发表于2020-04-09 11:02 被阅读0次
    • 题目描述:给定两个字符串 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
    

    相关文章

      网友评论

          本文标题:字符串的排列

          本文链接:https://www.haomeiwen.com/subject/invqmhtx.html