Skip to content

Commit d3b665e

Browse files
committed
longest-repeating-character-replacement solution
1 parent e54ac6a commit d3b665e

File tree

1 file changed

+22
-0
lines changed

1 file changed

+22
-0
lines changed
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
class Solution:
2+
def characterReplacement(self, s: str, k: int) -> int:
3+
4+
# ์Šฌ๋ผ์ด๋”ฉ ์œˆ๋„์šฐ(ํˆฌํฌ์ธํ„ฐ)
5+
count = {} # ๋ฌธ์ž ๋นˆ๋„์ˆ˜
6+
left = 0 # ์™ผ์ชฝ ํฌ์ธํ„ฐ
7+
max_count = 0 # ํ˜„์žฌ ์œˆ๋„์šฐ์—์„œ ์ตœ๋Œ€ ๋ฌธ์ž ๋นˆ๋„์ˆ˜
8+
answer = 0 # ๊ฐ€์žฅ ๊ธด ๋™์ผ ๋ฌธ์ž ๋ถ€๋ถ„ ๋ฌธ์ž์—ด์˜ ์ตœ๋Œ€ ๊ธธ์ด
9+
10+
# ์˜ค๋ฅธ์ชฝ ํฌ์ธํ„ฐ๋ฅผ ํ•œ ์นธ์”ฉ ๋Š˜๋ ค๊ฐ€๋ฉฐ ์œˆ๋„์šฐ ํ™•์žฅ
11+
for right in range(len(s)):
12+
count[s[right]] = count.get(s[right],0) + 1 # ํ˜„์žฌ ๋ฌธ์ž ์นด์šดํŠธ ์ฆ๊ฐ€
13+
max_count = max(max_count, count[s[right]]) # ๊ฐ€์žฅ ๋งŽ์ด ๋“ฑ์žฅํ•œ ๋ฌธ์ž ์ˆ˜ ๊ฐฑ์‹ 
14+
15+
# ์œˆ๋„์šฐ๊ธธ์ด(right-left+1) - ๊ฐ€์žฅ์ž์ฃผ๋‚˜์˜จ๋ฌธ์ž ๋นˆ๋„์ˆ˜ > k : ํ˜„์žฌ ์œˆ๋„์šฐ์—์„œ ๋ฐ”๊ฟ”์•ผํ•˜๋Š” ๋ฌธ์ž๊ฐ€ ๋” ๋งŽ์œผ๋ฉด ์™ผ์ชฝ ํฌ์ธํ„ฐ ์ด๋™
16+
if (right-left+1) - max_count > k:
17+
count[s[left]] -= 1 # ์™ผ์ชฝ ๋ฌธ์ž ์ œ๊ฑฐ
18+
left += 1 # ์™ผ์ชฝ ํฌ์ธํ„ฐ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ํ•œ ์นธ ์ด๋™
19+
20+
answer = max(answer, right-left+1)
21+
22+
return answer

0 commit comments

Comments
ย (0)