Python 3 递归解法:
面试的时候不太敢直接用eval()。。。参考大佬们的c++写了个递归的python解法:
st = input().replace('[','(').replace(']',')').replace('{','(').replace('}',')')
def func(i):
nums = []
flag = None
while i < len(st):
num = 0
if st[i] == '(':
i, num = func(i+1)
if flag == ')':
return i, sum(nums)
while i < len(st) and st[i].isdigit():
num = num*10 + int(st[i])
i += 1
if not nums:
nums.append(num)
if flag == '+':
nums.append(num)
elif flag == '-':
nums.append(-num)
elif flag == '*':
nums.append(nums.pop()*num)
elif flag == '/':
nums.append(nums.pop()//num)
if i < len(st): flag = st[i]
i += 1
return i, sum(nums)
print(func(0)[1])

京公网安备 11010502036488号