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;}
}