leetcode

438.找到字符串中所有字母异位词

力扣链接

class Solution {
public:
  std::vector<int> findAnagrams(string s, string p) {
    std::vector<int> res;
    if (s.size() < p.size()) return res;
    std::vector<int> pcnt(26), scnt(26);
    for (int i = 0; i < p.size(); i++){
      pcnt[p[i] - 'a']++;
      scnt[s[i] - 'a']++;
    }
    if (pcnt == scnt) res.push_back(0);
    for (int i = 0; i < s.size() - p.size(); i++){
      scnt[s[i] - 'a']--;
      scnt[s[i + p.size()] - 'a']++;
      if (pcnt == scnt) res.push_back(i + 1);
    }
    return res;
  }
};