力扣-438.找到字符串中所有字母异位词
题目链接
438.找到字符串中所有字母异位词
class Solution {public List<Integer> findAnagrams(String s, String p) {List<Integer> res = new ArrayList<>();if (p.length() > s.length())return res;char[] subs = new char[26];char[] flagp = new char[26];for (int i = 0; i < p.length(); i++) {subs[s.charAt(i) - 'a']++;flagp[p.charAt(i) - 'a']++;}for (int i = 0; i <= s.length() - p.length(); i++) {if (Arrays.equals(subs, flagp)) {res.add(i);}subs[s.charAt(i) - 'a']--;if (i == s.length() - p.length()) {break;}subs[s.charAt(i + p.length()) - 'a']++;}return res;}
}
小结:用标记数组进行比较,注意java
中比较两数组是否相等的API
:Arrays.equals(arr1, arr2)
,维护一个和p
长度相等的滑动窗口。