题目链接:385. 迷你语法分析器
通过正则实现词法分析,然后使用一个栈实现语法分析器。题目保证输入数据一定合法,因此最终留在栈中的一定只有一个 NestedInteger。
class Solution:
def deserialize(self, s: str) -> NestedInteger:
stack = []
for mo in re.finditer(r'([\-0-9]+)|(])|(\[)|(,)', s):
token = mo.group()
if token == '[':
stack.append(token)
elif token == ']':
eles = []
while stack:
e = stack.pop()
if e == '[':
break
eles.append(e)
ele = NestedInteger()
while eles:
e = eles.pop()
ele.add(e)
stack.append(ele)
elif token == ',':
pass
else: # token is an integer
stack.append(NestedInteger(int(token)))
return stack.pop()