题目
题目及示例
我的题解
public List<Integer> findAnagrams(String s, String p) {
List<Integer> result = new ArrayList<>();
int pLen = p.length();
int sLen = s.length();
if (pLen > sLen) {
return result;
}
int[] pFre = new int[26];
int[] sFre = new int[26];
for (int i = 0; i < pLen; i++) {
pFre[p.charAt(i) - 'a']++;
sFre[s.charAt(i) - 'a']++;
}
int index = 0;
while (index < sLen - pLen) {
if (Arrays.equals(pFre, sFre)) {
result.add(index);
}
sFre[s.charAt(index) - 'a']--;
sFre[s.charAt(index + pLen) - 'a']++;
index++;
}
if (Arrays.equals(pFre, sFre)) {
result.add(index);
}
return result;
}