查找两个字符串中的相同的字符位置

给定一个字符串小号非空字符串p

字符串只包含小写英文字母,字符串sp的长度不会大于20,100。

输出的顺序并不重要。


采用滑动窗口的方法实现。

class Solution {
public:
    vector<int> findAnagrams(string s, string p) {
     vector<int>ve1(256,0);
           vector<int>ve2(256,0);
        vector<int>res;
       
        if(p.size()>s.size())
            return res;
        for(int i=0;i<p.size();i++)
        {
            ++ve1[p[i]];
            ++ve2[s[i]];
        }
        if(ve1==ve2)
            res.push_back(0);
       
        for(int i=p.size();i<s.size();++i)
        {
            ++ve2[s[i]];
            --ve2[s[i-p.size()]];
           
            if(ve1==ve2)
                res.push_back(i-p.size()+1) ;
        }
       
        return res;
    }
};

猜你喜欢

转载自blog.csdn.net/yeke123456789/article/details/78551924