在Python中将s-表达式评估为字符串的程序
假设我们有一个字符串s作为S表达式。我们必须评估该S表达式并以整数形式返回结果。我们知道s表达式是一个数字,或者是一个用括号括起来的递归表达式,例如(+(-32)(*33)),表示(3-2)+(3*3)=10。这里有效的运算符是+,-,*和/。
因此,如果输入像s=“(-(+(322)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
热门推荐
10 八一幼儿祝福语大全简短
11 公司乔迁食堂祝福语简短
12 婚礼结束聚餐祝福语简短
13 儿媳买车妈妈祝福语简短
14 毕业送礼老师祝福语简短
15 同事辞职正常祝福语简短
16 恭贺新婚文案祝福语简短
17 金店立秋祝福语简短英文
18 婆婆高寿祝福语大全简短