@@ -88,10 +88,10 @@ from collections import Counter
88
88
89
89
class Solution:
90
90
def minWindow(self, s: str, t: str) -> str:
91
- char_counter = MinCharacterCounter (t)
91
+ char_counter = CharacterCounter (t)
92
92
str_builder, min_substr, found = '', s, False
93
93
for right_ch in s:
94
- char_counter.increment( right_ch)
94
+ char_counter += right_ch
95
95
str_builder += right_ch
96
96
if char_counter.is_valid:
97
97
for left_ch in str_builder:
@@ -101,25 +101,27 @@ class Solution:
101
101
min_substr = str_builder
102
102
else:
103
103
break
104
- char_counter.decrement( left_ch)
104
+ char_counter -= left_ch
105
105
str_builder = str_builder[1:]
106
106
return min_substr if found else ''
107
107
108
- class MinCharacterCounter :
108
+ class CharacterCounter :
109
109
def __init__(self, source_str):
110
110
self._ch_to_n_counts = defaultdict(int)
111
111
self._source_counts = Counter(source_str)
112
112
self._n_valid_chars = 0
113
113
114
- def increment (self, char):
114
+ def __iadd__ (self, char):
115
115
self._ch_to_n_counts[char] += 1
116
116
if char in self._source_counts and self._ch_to_n_counts[char] == self._source_counts[char]:
117
117
self._n_valid_chars += 1
118
+ return self
118
119
119
- def decrement (self, char):
120
+ def __isub__ (self, char):
120
121
self._ch_to_n_counts[char] -= 1
121
122
if char in self._source_counts and self._ch_to_n_counts[char] == self._source_counts[char]-1:
122
123
self._n_valid_chars -= 1
124
+ return self
123
125
124
126
@property
125
127
def is_valid(self):
0 commit comments