File tree Expand file tree Collapse file tree 1 file changed +41
-0
lines changed
longest-repeating-character-replacement Expand file tree Collapse file tree 1 file changed +41
-0
lines changed Original file line number Diff line number Diff line change
1
+ class Solution :
2
+ def characterReplacement (self , s : str , k : int ) -> int :
3
+ """
4
+ Time Complexity: O(n)
5
+ Space Complexity: O(1)
6
+ """
7
+ n = len (s )
8
+
9
+ if n == 0 :
10
+ return 0
11
+
12
+ left = 0 # μλμ°μ μΌμͺ½ μΈλ±μ€ (μμ)
13
+ max_len = 0 # κ°μ₯ κΈ΄ μ ν¨ν λΆλΆ λ¬Έμμ΄ κΈΈμ΄
14
+ char_counts = {} # ν μλμ° μμμ κ° λ¬Έμ λΉλμ
15
+ max_freq_count = 0 # ν μλμ° μμμ κ°μ₯ λ§μ΄ λ±μ₯ν λ¬Έμ λΉλμ
16
+
17
+ for right in range (n ):
18
+ right_char = s [right ] # μλμ° μ€λ₯Έμͺ½μ μΆκ°ν λ¬Έμ
19
+
20
+ # μΆκ°ν λ¬Έμ λΉλμ κ°±μ
21
+ char_counts [right_char ] = char_counts .get (right_char , 0 ) + 1
22
+
23
+ max_freq_count = max (max_freq_count , char_counts [right_char ])
24
+
25
+ current_window_length = right - left + 1
26
+
27
+ # λ°κΏμΌ νλ λ¬Έμ μ = μλμ° κΈΈμ΄ - κ°μ₯ λ§μ λ¬Έμμ λΉλμ
28
+ changes_needed = current_window_length - max_freq_count
29
+
30
+ # λ§μ½ λ°κΏμΌ νλ λ¬Έμ μκ° kλ³΄λ€ ν¬λ©΄
31
+ # μ ν¨νμ§ μμ μλμ° => μλμ°λ₯Ό μ€μ¬μΌ ν¨
32
+ if changes_needed > k :
33
+ left_char = s [left ] # μ κ±°ν λ¬Έμ
34
+ char_counts [left_char ] -= 1 # λΉλμ μ€μ΄κΈ°
35
+
36
+ left += 1 # μλμ° μΆμ
37
+
38
+ # μ΅λ κΈΈμ΄ μ
λ°μ΄νΈ, λ°ν
39
+ max_len = max (max_len , right - left + 1 )
40
+
41
+ return max_len
You canβt perform that action at this time.
0 commit comments