AM 647. Find All Anagrams in a String

Code(Language:C++) (Judger:cloudjudge-cluster-7)
class Solution {
public:
    /**
     * @param s: a string
     * @param p: a string
     * @return: a list of index
     */
    vector<int> findAnagrams(string &s, string &p) {
        // write your code here
        vector<int> res;
        vector<int> as(26, 0);
        vector<int> ap(26, 0);
        const int sizeS = s.size();
        const int sizeP = p.size();
        if(sizeS < sizeP){
            return res; 
        }
        for(int i = 0; i < sizeP; i++){
            as[s[i] - 'a']++;
            ap[p[i] - 'a']++; 
        }
        if(as == ap){
            res.push_back(0); 
        }
        for(int i = sizeP; i < sizeS; i++){
            as[s[i] - 'a']++;
            as[s[i - sizeP] - 'a']--; 
            if(as == ap){
                res.push_back(i - sizeP + 1); 
            }
        }
        return res; 
    }
};

Comments

Popular posts from this blog

算法的比较