Skip to content

Commit 2ec1155

Browse files
committed
feat(soobing): week8 > longest-repeating-character-replacement
1 parent 6cbb599 commit 2ec1155

File tree

1 file changed

+34
-0
lines changed

1 file changed

+34
-0
lines changed
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
/**
2+
* ๋ฌธ์ œ ์„ค๋ช…
3+
* - k๋ฒˆ ๋ฌธ์ž ๋Œ€์ฒด๋ฅผ ํ†ตํ•ด ๊ฐ€์žฅ ๊ธธ๊ฒŒ ๋ฐ˜๋ณต๋˜๋Š” ๋ฌธ์ž์—ด ์ฐพ๊ธฐ
4+
*
5+
* ์•„์ด๋””์–ด
6+
* 1) Sliding Window ํ™œ์šฉ
7+
* - ํˆฌํฌ์ธํ„ฐ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ํ™œ์šฉํ•˜์—ฌ ํ˜„์žฌ ์œˆ๋„์šฐ ๋‚ด์—์„œ k๋ฒˆ ๋ฌธ์ž ๋Œ€์ฒด๊ฐ€ ๊ฐ€๋Šฅํ•œ์ง€ ์ฒดํฌํ•˜๊ณ ,
8+
* ์œˆ๋„์šฐ ํฌ๊ธฐ๋ฅผ ์กฐ์ ˆํ•˜๋ฉด์„œ ์ตœ๋Œ€ ๊ธธ์ด๋ฅผ ์ฐพ๋Š”๋‹ค.
9+
*
10+
* ์‹œ๊ฐ„ ๋ณต์žก๋„
11+
* - O(n)
12+
* - ๋ฌธ์ž์—ด์„ ํ•œ๋ฒˆ ์ˆœํšŒํ•˜๋ฉด์„œ ์œˆ๋„์šฐ ํฌ๊ธฐ๋ฅผ ์กฐ์ ˆํ•˜๊ธฐ ๋•Œ๋ฌธ์— O(n)์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ ๊ฐ€์ง„๋‹ค.
13+
*
14+
* ๊ณต๊ฐ„ ๋ณต์žก๋„
15+
* - O(1)
16+
*/
17+
18+
function characterReplacement(s: string, k: number): number {
19+
let start = 0;
20+
const map: Record<string, number> = {};
21+
let maxLength = 0;
22+
let maxCount = 0;
23+
for (let end = 0; end < s.length; end++) {
24+
map[s[end]] = (map[s[end]] || 0) + 1;
25+
maxCount = Math.max(maxCount, map[s[end]]);
26+
while (end - start + 1 - maxCount > k) {
27+
map[s[start]]--;
28+
start++;
29+
}
30+
31+
maxLength = Math.max(end - start + 1, maxLength);
32+
}
33+
return maxLength;
34+
}

0 commit comments

Comments
ย (0)