1,题目描述-找出字符串中所有的字母异位词
给定两个字符串 s
和 p
,找到 s
中所有 p
的 异位词 的子串,返回这些子串的起始索引。不考虑答案输出的顺序。
异位词 指由相同字母重排列形成的字符串(包括相同的字符串)。
2,解题
var findAnagrams = function(s, p) {
if (!s || s.length < p.length) return [];
let left = 0;
let res = [];
const need = Array(26).fill(0);
const window = Array(26).fill(0);
// 初始化目标字符串的计数
for (let char of p) {
need[char.charCodeAt(0) - 'a'.charCodeAt()]++;
}
for(let i = 0; i < s.length; i++){
window[s.charCodeAt(i) - 'a'.charCodeAt()]++;
if(i - left === p.length -1){
if (need.toString() === window.toString()) {
res.push(left);
}
window[s.charCodeAt(left) - 'a'.charCodeAt()]--;
left++;
}
}
return res;
};
注意不仅要更新left 也要对window中left索引上元素进行清除
if(i - left === p.length -1){
if (need.toString() === window.toString()) {
res.push(left);
}
window[s.charCodeAt(left) - 'a'.charCodeAt()]--;
left++;
}
时隔数月,再次刷起力扣
贵在坚持!持之以恒!