AlgoMooc
← 返回题库

P2603. 仿LISP运算

中等通过率 52% · 提交 860 · 通过 446
字符串模拟

小慕正在设计一个自定义表达式计算器,其中唯一的语法规则是括号必须正确配对。表达式的格式为 ( P1 P2 …),括号内各元素之间用单个空格分隔。第一个元素 OP 是操作符,后面的元素都是它的参数,参数个数由操作符类型决定。 注意:参数 P1 和 P2 本身也可能是另一个的 (OP P1 P2 …) 表达式。当前支持的操作符类型有 add / sub / mul / div(全小写),分别表示整数的加、减、乘、除。为简化问题,所有操作符的参数个数均为 2。 举例: - 输入:(mul 3 - 7) 输出: -21 - 输入:(add 1 2) 输出:3 - 输入:(sub(mul 2 4) (div 9 3)) 输出:5 - 输入:(div 1 0) 输出:error 题目中涉及的所有数字均为整数,可能为负;不考虑 32 位整数的溢出翻转,计算过程中也不会发生 32 位溢出翻转。当出现除零错误时,输出 "error"。除法遇到除不尽的情况,,例如 3 / 2 = 1。

提示:带虚线的词点一下有通俗解释。

输入描述

输入为长度不超过 512 的字符串,用例保证了无语法错误

输出描述

输出计算结果或者"error"

示例

示例 1

输入

(div 12 (sub 45 45))

输出

error

示例 2

输入

(add 1 (div -7 3))

输出

-2

时间限制 1000 ms · 内存限制 128 MB

看不懂题目?点开图解(训练营专属)

登录后查看题目图解

题目图解为训练营学员专属内容,请先登录。

微信扫码登录还不是训练营学员?了解训练营 →
写完代码点「提交」,将对全部测试用例判题。