forked from super30admin/DFS-2
-
Notifications
You must be signed in to change notification settings - Fork 0
/
decode-string.py
41 lines (31 loc) · 974 Bytes
/
decode-string.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
# Time Complexity : O(n)
# Space Complexity : O(n)
# Did this code successfully run on Leetcode : Yes
# Any problem you faced while coding this : No
from typing import Deque
class Solution:
def decodeString(self, s: str) -> str:
num = 0
char = ""
nums = Deque()
strs = Deque()
for i in s:
if i.isnumeric():
num = num * 10 + int(i)
# when a open bracket is encountered
elif i == "[":
nums.append(num)
strs.append(char)
num = 0
char = ""
# when a closed bracket is encountered
elif i == "]":
rep = nums.pop()
new_char = ""
for x in range(rep):
new_char = new_char + char
char = strs.pop()
char = char + new_char
else:
char = char + i
return char