给定两个字符串 s1 和 s2,写一个函数来判断 s2 是否包含 s1 的排列。
输入: s1 = "ab" s2 = "eidbaooo"
输出: True
解释: s2 包含 s1 的排列之一 ("ba").
示例 2:
输入: s1= "ab" s2 = "eidboaoo"
输出: False
/**
* @param {string} s1
* @param {string} s2
* @return {boolean}
*/
// 滑动窗口
var checkInclusion = function(s1, s2) {
let s1Map = new Array(26).fill(0);
let s2Map = new Array(26).fill(0);
let n = s1.length;
if (s1.length > s2.length) {
return false
}
for(let i = 0 ; i < n; i++) {
console.log('s1[i]', s1[i])
s1Map[s1[i].charCodeAt() - 'a'.charCodeAt()]++
s2Map[s2[i].charCodeAt() - 'a'.charCodeAt()]++
}
if (s1Map.toString() == s2Map.toString()) {
console.log(s1Map, s2Map)
return true
}
for(let i = n; i < s2.length; i++) {
s2Map[s2[i].charCodeAt() - 'a'.charCodeAt()]++
s2Map[s2[i-n].charCodeAt() - 'a'.charCodeAt()]--
console.log(s1Map, s2Map)
if (s1Map.toString() == s2Map.toString()) {
return true
}
}
return false
};