假设我们有一个字符串s作为S表达式。我们必须评估该S表达式并以整数形式返回结果。我们知道s表达式是一个数字,或者是一个用括号括起来的递归表达式,例如(+(-3 2)(* 3 3)),表示(3-2)+(3 * 3)=10。这里有效的运算符是+,-,*和/。
因此,如果输入像s =“(-(+(3 2 2)2)”),则输出将为3,因为((3 + 2)-2)= 3。
让我们看下面的实现以更好地理解-
class Solution: def solve(self, s): stack = list() s = s.replace("(", "") s = s.replace(")", "") a = s.split() for i in a[::-1]: if len(i) > 1: if i[0] == "-": stack.append(int(i)) continue else: stack.append(int(i)) elif i.isdigit(): stack.append(int(i)) else: if len(stack) >= 2: num1 = stack.pop() num2 = stack.pop() if i == "+": stack.append(int(num1 + num2)) elif i == "-": stack.append(int(num1 - num2)) elif i == "*": stack.append(int(num1 * num2)) else: stack.append(int(num1 / num2)) return stack.pop() ob = Solution() s = "(- (+ 3 2) 2)" print(ob.solve(s))
s = "(- (+ 3 2) 2)"输出结果
3