Back to course home
0% completed
Vote For New Content
Solution: Decode String
Problem Statement
You have a string that represents encodings of substrings, where each encoding is of the form k[encoded_string]
, where k
is a positive integer, and encoded_string
is a string that contains letters only.
Your task is to decode this string by repeating the encoded_string
k
times and return it. It is given that k
is always a positive integer.
Examples
-
- Input:
"3[a3[c]]"
- Expected Output:
"acccacccaccc"
- Justification: The inner
3[c]
is decoded asccc
, and thena
is appended to the front, formingacc
. This is then repeated 3 times to formacccacccaccc
.
- Input:
-
- Input:
"2[b3[d]]"
- Expected Output:
"bdddbddd"
- Justification: The inner
3[d]
is decoded asddd
, and thenb
is appended to the front, formingbddd
. This is then repeated 2 times to formbddd bddd
.
- Input:
-
- Input:
"4[z]"
- Expected Output:
"zzzz"
- Justification: The
4[z]
is decoded asz
repeated 4 times, formingzzzz
.
- Input:
Constraints:
1 <= s.length <= 30
s
consists of lowercase English letters, digits, and square brackets '[]'.s
is guaranteed to be a valid input.- All the integers in s are in the range
[1, 300]
.
Solution
-
Understanding the Problem:
- The problem involves decoding a string that contains patterns where a number is followed by a string in brackets.
- The number indicates how many times the string in brackets should be repeated.
-
Approach:
- Use a stack to keep track of the characters in the string.
- Iterate through the string character by character.
- When a number is encountered, calculate the complete number.
- When an opening bracket
[
is encountered, push the calculated number to the stack. - When a closing bracket
]
is encountered, pop elements from the stack until a number is encountered and form the substring to be repeated. - Multiply the substring with the number and push the result back to the stack.
-
Handling Nested Brackets:
- The stack will naturally handle nested brackets as it will continue popping elements until a number is encountered, forming the substring for the innermost bracket first.
Algorithm Walkthrough
- Given Input:
"3[a3[c]]"
- Steps:
- Initialize an empty stack.
- Iterate through the string:
- Encounter
3
, push3
to the stack. - Encounter
[
, do nothing. - Encounter
a
, pusha
to the stack. - Encounter
3
, push3
to the stack. - Encounter
[
, do nothing. - Encounter
c
, pushc
to the stack. - Encounter
]
, popc
and3
, formccc
and push it back to the stack. - Encounter
]
, popccc
,a
, and3
, formacccacccaccc
and push it back to the stack.
- Encounter
- The final stack contains
acccacccaccc
as the only element, which is the decoded string.
Code
Python3
Python3
. . . .
Complexity Analysis
- Time Complexity: O(n), where n is the length of the input string. This is because we are iterating through the string once and processing each character.
- Space Complexity: O(n), where n is the length of the input string. In the worst case, the stack will store all the characters of the input string.
.....
.....
.....
Like the course? Get enrolled and start learning!
Table of Contents
Contents are not accessible
Contents are not accessible
Contents are not accessible
Contents are not accessible
Contents are not accessible