题目:LCR 015
解法:双指针
本题和LCR 014
一模一样,区别仅为记录索引,可直接使用LCR 014
中的解法三处理
public List<Integer> findAnagrams(String s, String p) {
List<Integer> list = new ArrayList<>();
int[] arr = new int[26];
for (int i = 0; i < p.length(); i++) {
arr[p.charAt(i) - 'a']++;
}
int start = 0;
for (int end = 0; end < s.length(); end++) {
int index = s.charAt(end) - 'a';
arr[index]--;
while (arr[index] < 0) {
arr[s.charAt(start) - 'a']++;
start++;
}
if (end - start + 1 == p.length()) list.add(start);
}
return list;
}
注意:
- 变位词只会将字符位置变换,字符个数依然不变