Skip to content

Commit 2f7c0ea

Browse files
committed
32 Decode string
1 parent 8c8abc9 commit 2f7c0ea

1 file changed

Lines changed: 21 additions & 0 deletions

File tree

06/tasks/task_32_decode_string.py

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,4 +5,25 @@ def decode_string(s: str) -> str:
55
Dekóduje zakódovaný řetězec ve formátu k[encoded_string],
66
např. "3[a]2[bc]" → "aaabcbc".
77
"""
8+
while '[' in s:
9+
pos_left_bracket = s.index('[')
10+
pos_right_bracket = s.index(']')
11+
# check for nested brackets
12+
if '[' in s[pos_left_bracket + 1:]:
13+
pos_left_bracket2 = s.index('[', pos_left_bracket + 1)
14+
else:
15+
pos_left_bracket2 = len(s) + 1
16+
# no nested brackets
17+
if pos_right_bracket < pos_left_bracket2:
18+
pos_num = pos_left_bracket - 1
19+
num = ''
20+
while s[pos_num].isdigit():
21+
num = s[pos_num] + num
22+
pos_num += -1
23+
s = s[:pos_left_bracket - len(num)] + int(
24+
num) * s[pos_left_bracket + 1:pos_right_bracket] + s[pos_right_bracket + 1:]
25+
# nested brackets
26+
else:
27+
s = s[:pos_left_bracket + 1] + decode_string(s[pos_left_bracket + 1:])
28+
return s
829

0 commit comments

Comments
 (0)