找到字符串中所有字母异位词--滑动窗口

 个人主页:Lei宝啊 

愿所有美好如期而遇


本体题目链接icon-default.png?t=N7T8https://leetcode.cn/problems/VabMRr/description/

找到字符串中所有字母异位词--滑动窗口_第1张图片算法原理 

滑动窗口其实就是种双指针,只是这种双指针只向后移动,不会回退,具有单调性,也就是说,整个过程中left和right只会++。 

本题思路我们通过图示来明晰。

图示

找到字符串中所有字母异位词--滑动窗口_第2张图片

找到字符串中所有字母异位词--滑动窗口_第3张图片

找到字符串中所有字母异位词--滑动窗口_第4张图片

找到字符串中所有字母异位词--滑动窗口_第5张图片

找到字符串中所有字母异位词--滑动窗口_第6张图片

找到字符串中所有字母异位词--滑动窗口_第7张图片 找到字符串中所有字母异位词--滑动窗口_第8张图片

 找到字符串中所有字母异位词--滑动窗口_第9张图片

后面不再画。 

代码

class Solution 
{
public:
    vector findAnagrams(string s, string p) 
    {
        vector v;
        vector hash1(26);
        vector hash2(26);

        for(int i=0; i p.size())
            {
                //出的数据是有效字符时,我们count--
                if(hash1[rb] <= hash2[rb])
                {
                    count--;
                }  

                //出窗口  
                hash1[rb]--;
                len--;  
                lhs++;          
            } 
           
            if(count == p.size()) v.push_back(lhs);         
        }

        return v;
    }
};

你可能感兴趣的:(算法,算法,滑动窗口)