1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
| class Solution { public List<Integer> findAnagrams(String s, String p) { List<Integer> res = new ArrayList<>();
int[] cntS = new int[30]; int[] cntP = new int[30]; for (char c : p.toCharArray()) { cntP[c-'a']++; } for(int r=0;r<s.length();r++) { cntS[s.charAt(r)-'a']++; int l = r - p.length() + 1; if(l<0){ continue; } if(Arrays.equals(cntS,cntP)){ res.add(l); } cntS[s.charAt(l) - 'a']--; }
return res; } }
|