385. Mini Parser - cocoder39/coco39_LC GitHub Wiki
385. Mini Parser
class Solution:
def deserialize(self, s: str) -> NestedInteger:
if not s:
return NestedInteger()
if s[0] != '[':
return NestedInteger(int(s))
stack = []
num = ''
for ch in s:
if ch.isdigit() or ch == "-":
num += ch
elif ch == '[':
stack.append(NestedInteger())
elif ch in ',]':
if num:
stack[-1].add(NestedInteger(int(num)))
num = ''
if ch == ']' and len(stack) > 1:
ni = stack.pop()
stack[-1].add(ni)
return stack[0]
def serialize(self, nested_integer: NestedInteger) -> str:
if nested_integer.isInteger():
return str(nested_integer.getInteger())
res = []
for ni in nested_integer.getList():
res.append(self.serialize(ni))
res = ','.join(res)
return '[' + res + ']'