本题要求对一条远古表达式字符串进行求值,表达式格式为 L op R,其中 op 是数字字符 1、2、3 或 4,L 和 R 均为仅由小写字母 a~z 组成的子串,且各自的长度在 1 到 4 之间。求值过程分为以下几步:
定位运算符
遍历字符串 formula,找到唯一的一个数字字符('1'~'4'),记录其下标 opPos。该字符将左右两侧的字母序列分隔开。
字母序列转整数
formula[0..opPos-1] 和右侧子串 formula[opPos+1..],分别将每个小写字母映射为对应的数字:'a' → 0,'b' → 1,……,'z' → 25。在考古发掘中,发现了一种由小写字母 a 到 z 和数字字符 1、2、3、4 构成的远古符号系统。每个小写字母对应一个数字:a 视为 0,b 视为 1,……,z 视为 25。数字字符 1、2、3、4 分别代表四种操作:1 表示加法,2 表示减法,3 表示乘法,4 表示整除(向下取整)。一段合法的表达式由一个数字字符和左右各一至四个小写字母组成,例如 c3d。计算时,先将左右两侧的字母序列分别转换为对应的数字,再将这些数字按从左到右的顺序拼接成十进制整数(可能包含前导零,但拼接后按正常整数解析)。然后根据中间的数字字符执行对应的运算。如果运算结果是一个负数,取它的绝对值作为最终结果(因为这种符号体系中没有负数的概念)。如果运算符是 4 且右侧拼接得到的整数为 0,则表达式无效,此时返回 -1 表示错误。
表达式字符串的长度不超过 9,运算符左右两侧的连续字母子串长度均在 1 到 4 之间,且保证输入格式正确。
输入参数为一个字符串 formula,表示一条远古表达式。字符串有且仅有一个字符 1、2、3 或 4,其余字符均为小写字母 a 至 z,且该数字字符左右两侧的连续字母序列长度均在 1 到 4 之间。
Scan the QR code below with WeChat to sign in
First-time scan will create your account automatically
请使用微信扫描下方二维码完成注册