Skip to content

Commit dbda718

Browse files
authored
[ PS ] : Longest Repeating Character Replacement
1 parent aceb3ca commit dbda718

File tree

1 file changed

+32
-0
lines changed

1 file changed

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

0 commit comments

Comments
ย (0)