Fork me on GitHub

Decode String

Description

https://leetcode.com/problems/decode-string/description/

Solution

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
class Solution(object):
def decodeString(self, s):
"""
:type s: str
:rtype: str
"""
return self.decodeFromIndex(s, 0)[1]

def decodeFromIndex(self, s, index):
ret = ""
traverse = index

while traverse < len(s):
ret_string = ""
number_str = ""
number = None
number_flag = False
while traverse < len(s) and ( (s[traverse] >= 'a' and s[traverse] <= 'z') or (s[traverse] >= 'A' and s[traverse] <= 'Z') ):
ret += s[traverse]
traverse += 1
while traverse < len(s) and s[traverse] >= '0' and s[traverse] <= '9':
number_flag = True
number_str += s[traverse]
traverse += 1
if number_flag:
number = int(number_str)


if traverse < len(s) and s[traverse] == '[':
traverse += 1
[traverse, ret_string] = self.decodeFromIndex(s, traverse)

if number:
for i in range(number):
ret += ret_string

print(traverse, ret_string)


if traverse < len(s) and s[traverse] == ']':
traverse += 1
break

return (traverse, ret)