普通表达式转逆波兰表示(RPN):指定表达式与目标RPN是否等价?
问题解答
首先,我们分别推导原数学表达式的正确逆波兰表示(RPN),再与给定字符串对比:
原表达式拆解与RPN推导
原表达式:(3+4)*(5+6+7*8)*(1*9+2*8)
- 子表达式
(3+4)的RPN:3 4 + - 子表达式
(5+6+7*8):先计算7*8(RPN:7 8 *),再计算5+6(RPN:5 6 +),最后将两个结果相加,完整RPN为5 6 + 7 8 * + - 子表达式
(1*9+2*8):先分别计算1*9(RPN:1 9 *)和2*8(RPN:2 8 *),再将结果相加,完整RPN为1 9 * 2 8 * +
将三个子表达式的RPN按乘法逻辑组合,整体正确RPN为:3 4 + 5 6 + 7 8 * + 1 9 * 2 8 * + * *
与给定字符串对比
给定字符串为:34 + 56 + 78 + * + 19 * 28 * + *
存在两处关键错误:
- 数字书写错误:将单个数字(如5、6)连写为
56、78、19、28,不符合RPN中单个操作数独立的规则 - 运算逻辑错误:子表达式
5+6+7*8的部分被错误写为56 + 78 + * +,其中78 +应为7 8 *,完全违背原表达式的运算优先级
因此,原表达式转换后的RPN与给定字符串不等价。
内容的提问来源于stack exchange,提问作者mmm
相关产品推荐
相关产品推荐

