如何评估包含后缀表达式(例如:3 5 +)的字符串(数组、其他内容),以检查其有效性?
如何评估包含后缀表达式(例如:3 5 +)的字符串(数组、其他内容),以检查其有效性?
我这里假设您所说的有效是指执行代码不会导致栈下溢并且将在栈上留下一个单一的值。如果您对有效性有更严格的概念,您需要使用更复杂的检查器。
要检查这种有效性,不需要评估字符串,可以使用计数器而不是堆栈。计数器跟踪如果您进行评估,则会在堆栈上有多少个值。为简化起见,假设只有文字、二元运算符和一元运算符。此算法使用特殊的递减操作:如果递减时计数器低于零,则字符串无效:
[2, +, 2]
将被视为有效。 - Tim检查后缀表达式是否有效(如果输入为字符数组): 1.操作数的数量必须等于运算符的数量加1。 为了检查这一点,需要一个检查变量。 check=0。每个操作数都要增加它,每个运算符都要减少它。如果最终值为1,则表达式有效。
2.数组的前两个元素需要是操作数。没有后缀表达式可以将运算符作为第一个或第二个元素。 通过if控制语句来检查这一点。