15.找到字符串中所有字母异位词
方法:滑动窗口
class Solution {
public List<Integer> findAnagrams(String s, String p) {
List<Integer> ans = new ArrayList<>();
int m = s.length(),n = p.length();
if(n > m){
return ans;
}
int[] cnt1 = new int[26];
int[] cnt2 = new int[26];
for(int i = 0;i<n;i++){
++cnt1[s.charAt(i) - 'a'];
++cnt2[p.charAt(i) - 'a'];
}
if(Arrays.equals(cnt1,cnt2)){
ans.add(0);
}
for(int i = n;i<m;i++){
++cnt1[s.charAt(i) - 'a'];
--cnt1[s.charAt(i-n) - 'a'];
if(Arrays.equals(cnt1,cnt2)){
ans.add(i- n + 1);
}
}
return ans;
}
}