438.找到字符串中所有字母异位词

给定两个字符串 s 和 p,找到 s 中所有 p 的 异位词 的子串,返回这些子串的起始索引。不考虑答案输出的顺序。

异位词 指由相同字母重排列形成的字符串(包括相同的字符串)。

示例 1:

输入: s = "cbaebabacd", p = "abc"
输出: [0,6]
解释:
起始索引等于 0 的子串是 "cba", 它是 "abc" 的异位词。
起始索引等于 6 的子串是 "bac", 它是 "abc" 的异位词。

 示例 2:

输入: s = "abab", p = "ab"
输出: [0,1,2]
解释:
起始索引等于 0 的子串是 "ab", 它是 "ab" 的异位词。
起始索引等于 1 的子串是 "ba", 它是 "ab" 的异位词。
起始索引等于 2 的子串是 "ab", 它是 "ab" 的异位词。

提示:

  • 1 <= s.length, p.length <= 3 * 104
  • s 和 p 仅包含小写字母

 方法:哈希

 1 /**
 2  * @param {number[]} nums
 3  * @return {number[]}
 4  */
 5 var findDisappearedNumbers = function(nums) {
 6     let map = new Map(),
 7         n = nums.length,
 8         res = [];
 9     nums.forEach((item, index) => {
10         map.set(item, index)
11     });
12     for (let i = 1; i <= n; i++) {
13         if (map.get(i) == null) { 
14             res.push(i);
15         }
16     }
17     return res;
18 }

 

posted @ 2022-11-09 20:43  icyyyy  阅读(18)  评论(0)    收藏  举报