Skip to content

Commit 95e49af

Browse files
committed
add solution : 424. Longest Repeating Character Replacement
1 parent f62904d commit 95e49af

File tree

1 file changed

+39
-0
lines changed
  • longest-repeating-character-replacement

1 file changed

+39
-0
lines changed
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
/**
2+
* @link https://leetcode.com/problems/longest-repeating-character-replacement/
3+
*
4+
* ์ ‘๊ทผ ๋ฐฉ๋ฒ• :
5+
* - ๋ฌธ์ž์—ด ์ˆœํšŒํ•˜๋ฉด์„œ, ํ˜„์žฌ ์œˆ๋„์šฐ ๋‚ด ๋ฌธ์ž์˜ ๋นˆ๋„์ˆ˜ ์ €์žฅ
6+
* - ์œˆ๋„์šฐ ์ถ•์†Œ ์กฐ๊ฑด : ์œˆ๋„์šฐ ํฌ๊ธฐ - ์œˆ๋„์šฐ ๋‚ด ์ตœ๋‹ค ๋“ฑ์žฅ ๋ฌธ์ž์˜ ๊ฐœ์ˆ˜ > k
7+
* => k๋ณด๋‹ค ๋‹ค๋ฅธ ๋ฌธ์ž์˜ ๊ฐœ์ˆ˜๊ฐ€ ๋งŽ์€ ๊ฒฝ์šฐ, left ํฌ์ธํ„ฐ ์ด๋™ํ•ด์„œ ์œˆ๋„์šฐ ํฌ๊ธฐ ์ค„์ด๊ธฐ
8+
* - ์œˆ๋„์šฐ ํฌ๊ธฐ ์กฐ์ ˆํ•˜๋ฉด์„œ ์ตœ๋Œ€ ๊ธธ์ด ์—…๋ฐ์ดํŠธ
9+
*
10+
* ์‹œ๊ฐ„๋ณต์žก๋„ : O(n)
11+
* - ๋ฌธ์ž n๊ฐœ๋งŒํผ 1ํšŒ ์ˆœํšŒํ•˜๋ฉด์„œ ์œˆ๋„์šฐ ํฌ๊ธฐ ์กฐ์ ˆ
12+
*
13+
* ๊ณต๊ฐ„๋ณต์žก๋„ : O(1)
14+
* - ๋Œ€๋ฌธ์ž์˜ ๊ฐœ์ˆ˜(26๊ฐœ)๋งŒํผ map์— ์ €์žฅ
15+
*/
16+
function characterReplacement(s: string, k: number): number {
17+
const map = new Map<string, number>();
18+
let maxFrequency = 0,
19+
maxLength = 0,
20+
left = 0;
21+
22+
for (let right = 0; right < s.length; right++) {
23+
const rightPositionChar = s[right];
24+
// ๋ฌธ์ž์˜ ๋นˆ๋„์ˆ˜ map์— ์ €์žฅ
25+
map.set(rightPositionChar, (map.get(rightPositionChar) ?? 0) + 1);
26+
maxFrequency = Math.max(maxFrequency, map.get(rightPositionChar)!);
27+
28+
// ์œˆ๋„์šฐ ์ถ•์†Œํ•ด์•ผ ๋˜๋Š” ๊ฒฝ์šฐ - k๋ณด๋‹ค ๋‹ค๋ฅธ ๋ฌธ์ž์˜ ๊ฐœ์ˆ˜๊ฐ€ ๋งŽ์€ ๊ฒฝ์šฐ
29+
if (right - left + 1 - maxFrequency > k) {
30+
map.set(s[left], map.get(s[left])! - 1);
31+
left++;
32+
}
33+
34+
// ์ตœ๋Œ€ ๊ธธ์ด ์—…๋ฐ์ดํŠธ
35+
maxLength = Math.max(maxLength, right - left + 1);
36+
}
37+
38+
return maxLength;
39+
}

0 commit comments

Comments
ย (0)