Solution to Find All Anagrams in a String problem.

class Solution {
    public List<Integer> findAnagrams(String s, String p) {
        List<Integer> res = new ArrayList<>();
        
        int[] freq = new int[26];
        for(char c : p.toCharArray()) {
            freq[c - 'a']++;
        }
        
        int start = 0;
        int match = 0;
        for(int end=0;end<s.length();end++) {
            char c = s.charAt(end);
            freq[c - 'a']--;
            
            if(freq[c - 'a'] >= 0) {
                match++;
            }
            
            if(match == p.length()) {
                res.add(start);
            }
            
            if( (end - start)+1 == p.length()) {
                char charGoingOut = s.charAt(start);
                freq[charGoingOut - 'a']++;
                
                if(freq[charGoingOut - 'a'] > 0) {
                	match--;
                }
                start++;
            }
        }
        
        return res;
    }
}