public class Solution {
public List<Integer> findAnagrams(String s, String p) {
List<Integer> rst = new ArrayList<Integer>();
if (s == null || p == null || s.length() == 0 || p.length() == 0) {
return rst;
}
int[] map = new int[128];
for (char c : p.toCharArray()) {
map[c]++;
}
int left = 0, right = 0, count = p.length();
while (right < s.length()) {
if (map[s.charAt(right)] > 0) {
count--;
}
map[s.charAt(right)]--;
right++;
if (count == 0) {
rst.add(left);
}
if (right - left == p.length()) {
if (map[s.charAt(left)] >= 0) {
count++;
}
map[s.charAt(left)]++;
left++;
}
}
return rst;
}
}