394. Decode String
Given an encoded string, return its decoded string.
The encoding rule is:
k[encoded_string], where theencoded_stringinside the square brackets is being repeated exactlyktimes. Note thatkis guaranteed to be a positive integer.You may assume that the input string is always valid; there are 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 will not be input like3aor2[4].The test cases are generated so that the length of the output will never exceed
105.Example 1:
Input: s = "3[a]2[bc]"
Output: "aaabcbc"Example 2:
Input: s = "3[a2[c]]"
Output: "accaccacc"Example 3:
Input: s = "2[abc]3[cd]ef"
Output: "abcabccdcdcdef"
def decodeString(self, s: str) -> str:
ls = []
for i in range(len(s)):
if s[i] == ']':
char = ''
times = ''
while ls[-1] != '[':
char = ls.pop() + char
ls.pop()
while ls and ls[-1].isdigit():
times = ls.pop() + times
txt = int(times) * char
ls = ls + list(txt)
else:
ls.append(s[i])
return ''.join(ls)