안녕하세요 선생님!
이중 루프로 풀다가 O(N)으로 풀어보려고 해봤는데요..
new Map으로 반복문 안에서 계속 초기화 해주는 건 너무 비효율 적일까요?
function solution2(s, t) {
let answer = 0;
let lt = 0,
rt = 0;
let map1 = new Map();
for (const i of t) {
if (map1.has(i)) {
let val = map1.get(i);
map1.set(i, ++val);
} else map1.set(i, 1);
}
let map2 = new Map(map1);
while (1) {
if (rt > s.length) break;
if (rt - lt === t.length && map2.size === 0) {
answer++;
map2 = new Map(map1);
rt = ++lt;
}
if (!map2.has(s[rt])) {
rt = ++lt;
map2 = new Map(map1);
} else {
map2.delete(s[rt]);
rt++;
}
}
return answer;
}