394. Decode String
Problem description:
Given an encoded string, return its decoded string.
The encoding rule is: k[encoded_string]
, where the encoded_string
inside the square brackets is being repeated exactly k
times. Note that k
is guaranteed to be a positive integer.
You may assume that the input string is always valid; No extra white spaces, square brackets are well-formed, etc.
Furthermore, you may assume that the original data does not contain any digits and that digits are only for those repeat numbers, k
. For example, there won’t be input like 3a
or 2[4]
.
Example 1:1
2Input: s = "3[a]2[bc]"
Output: "aaabcbc"
Example 2:1
2Input: s = "3[a2[c]]"
Output: "accaccacc"
Example 3:1
2Input: s = "2[abc]3[cd]ef"
Output: "abcabccdcdcdef"
Example 4:1
2Input: s = "abc3[cd]xyz"
Output: "abccdcdcdxyz"
Solution:
Stack:
Thought process is to divide the case into digit
, character
, [
, ]
.
1 | class Solution: |
time complexity: $O(n)$
space complexity: $O(n)$
Solution DFS:
- The dfs should return a string
- Since the format is always valid, we expect the brackets always comes after numbers
- if
s[i]
is not number, then just append character to current level result - if
s[i]
is number, calculate the number first. Then get the string inside bracket.
1 | class Solution: |
reference:
related problem: