剑指 Offer II 014. 字符串中的变位词
- s1的长度 比 s2的长度 小 直接返回false ,否则进一步判断
- 声明两个长为26值为0的数组,分别对应26个字母
- 按照s1的规格先填充一下,同时s2页跟随s1的长度跟随一下,
- 如果他们的对应的数组结构一样,则直接返回true,否则需要进一步判断
- 把剩下的s2的元素给填充进去,每填充一个元素,都要删除最前面填充的元素,就这样保持,填充的个数和s1的长度一直,进一步判断,如果两个数组的结构一样,则直接返回true,如果全部填充完毕都没有找到相等的则直接返回false
var checkInclusion = function (s1, s2) {
var m = s1.length;
var n = s2.length;
if (m > n) return false;
var arr = new Array(26).fill(0);
var brr = new Array(26).fill(0);
for (var i = 0; i < m; i++) {
arr[s1[i].charCodeAt() - "a".charCodeAt()]++;
brr[s2[i].charCodeAt() - "a".charCodeAt()]++;
}
if (arr.toString() === brr.toString()) return true;
for (var i = m; i < n; i++) {
brr[s2[i].charCodeAt() - "a".charCodeAt()]++;
brr[s2[i - m].charCodeAt() - "a".charCodeAt()]--;
if (arr.toString() === brr.toString()) return true;
}
return false;
};