From cf6fee7a873daa585dd61027abbb1858055134bf Mon Sep 17 00:00:00 2001 From: Jana D Date: Mon, 7 Apr 2025 14:28:34 +0200 Subject: [PATCH] 32 Decode string --- 06/tasks/task_32_decode_string.py | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/06/tasks/task_32_decode_string.py b/06/tasks/task_32_decode_string.py index d27ac8f..d374b47 100644 --- a/06/tasks/task_32_decode_string.py +++ b/06/tasks/task_32_decode_string.py @@ -5,4 +5,25 @@ def decode_string(s: str) -> str: Dekóduje zakódovaný řetězec ve formátu k[encoded_string], např. "3[a]2[bc]" → "aaabcbc". """ - + while '[' in s: + pos_left_bracket = s.index('[') + pos_right_bracket = s.index(']') + # check for nested brackets + if '[' in s[pos_left_bracket + 1:]: + pos_left_bracket2 = s.index('[', pos_left_bracket + 1) + else: + pos_left_bracket2 = len(s) + 1 + # no nested brackets + if pos_right_bracket < pos_left_bracket2: + pos_num = pos_left_bracket - 1 + num = '' + while s[pos_num].isdigit(): + num = s[pos_num] + num + pos_num += -1 + s = s[:pos_left_bracket - len(num)] + int( + num) * s[pos_left_bracket + 1:pos_right_bracket] + s[pos_right_bracket + 1:] + # nested brackets + else: + s = s[:pos_left_bracket + 1] + \ + decode_string(s[pos_left_bracket + 1:]) + return s