var findAnagrams = function (s, p) {
let sLen = s.length;
let pLen = p.length;
if(sLen < pLen) return [];
let s1 = new Array(26).fill(0);
let p1 = new Array(26).fill(0);
let res = [];
for (let i = 0; i < pLen; i++) {
++s1[s[i].charCodeAt() - 'a'.charCodeAt()];
++p1[p[i].charCodeAt() - 'a'.charCodeAt()];
}
if(s1.toString() === p1.toString()) res.push(0);//转换成字符串进行比较
for (let i = 0; i < sLen - pLen; i++) {//滑动窗口,将滑动过后的与p对比
--s1[s[i].charCodeAt() - 'a'.charCodeAt()];//左窗口边界左移
++s1[s[i+pLen].charCodeAt() - 'a'.charCodeAt()];//右边界右移
if(s1.toString() === p1.toString()) res.push(i + 1);
}
return res;
};
438.找到字符串中所有字母异位词
最新推荐文章于 2024-07-15 22:53:16 发布