567. 字符串的排列

解题思路
- 先求出s1里面各个字符的个数存储到数组arr1中
- 再遍历数组s2注意结束条件是
let i = 0;i<=s2.length - s1.length;i++,当个数少于s2.length - s1.length不会再有结果
- 统计s2中每个s1.length长度区间的各个字符的个数,与s1中的比较,如果元素个数都一样则符合条件返回true
- 直接返回false,说明前面没有符合条件的
代码
/**
* @param {string} s1
* @param {string} s2
* @return {boolean}
*/
var checkInclusion = function(s1, s2) {
let arr1 = new Array(26).fill(0);
for (const item of s1){
arr1[item.charCodeAt() - 97]++;
}
for(let i = 0;i<=s2.length - s1.length;i++){
let arr2 = new Array(26).fill(0);
for(let j = 0;j<s1.length;j++){
arr2[s2.charCodeAt(i+j) - 97]++;
}
let t = 0;
for(t = 0;t<26;t++){
if(arr2[t] !== arr1[t]){
break;
}
}
if(t===26){
return true;
}
}
return false;
};
