问题
例子
思路
-
方法1
滑动窗口
-
方法2
代码
//方法1
class Solution {
public boolean check(int[] arr) {
for(int n : arr){
if(n!=0) return false;
}
return true;
}
public List<Integer> findAnagrams(String s, String p) {
if(p.length()>s.length()) return new ArrayList<Integer>();
List<Integer> list = new ArrayList<>();
int[] arr = new int[128];
for(int i=0; i<p.length(); i++) {
arr[p.charAt(i)]--;
arr[s.charAt(i)]++;
}
if(check(arr)) list.add(0);
for(int i=p.length(); i<s.length(); i++) {
arr[s.charAt(i-p.length())]--;
arr[s.charAt(i)]++;
if(check(arr)) list.add(i-p.length()+1);
}
return list;
//方法2