[滑动窗口/哈希] leetcode 567 Permutation in String

Posted fish1996

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[滑动窗口/哈希] leetcode 567 Permutation in String相关的知识,希望对你有一定的参考价值。

problem:https://leetcode.com/problems/permutation-in-string/

        这道题感觉几乎和Leetcode上另一题一模一样,昨天刚刷的:https://www.cnblogs.com/fish1996/p/11269526.html,就当签到题爽一爽了。

class Solution {
public:
    bool checkInclusion(string s1, string s2) {

        vector<int> target(26, 0);
        for (int i = 0; i < s1.size(); i++)
        {
            target[s1[i] - \'a\']++;
        }

        int k = s1.size();

        vector<int> source(26, 0);
        int count = 0;
        for (int i = 0; i < s2.size(); i++)
        {
            source[s2[i] - \'a\']++;
            if (source[s2[i] - \'a\'] <= target[s2[i] - \'a\'])
            {
                count++;
            }

            if (i >= k)
            {        
                if (source[s2[i - k] - \'a\'] <= target[s2[i - k] - \'a\'])
                {
                    count--;
                }
                source[s2[i - k] - \'a\']--;
            }

            if (count == k)
            {
                return true;
            }
        }

        return false;
    }
};

 

以上是关于[滑动窗口/哈希] leetcode 567 Permutation in String的主要内容,如果未能解决你的问题,请参考以下文章

Leetcode刷题100天—567. 字符串的排列(滑动窗口)—day22

滑动窗口同数组的结合(LeetCode 438.找到字符串中所有字母异位词&567.字符串的排列)

滑动窗口

leetcode 30. 串联所有单词的子串----滑动窗口篇八

LeetCode思维向题笔记总结(持续更新)

leetcode 3. 无重复字符的最长子串----滑动窗口篇1,双指针篇1