牛客网[编程题]表达式求值
表达式求值
给出一个布尔表达式的字符串,比如:true or false and false,表达式只包含true,false,and和or,现在要对这个表达式进行布尔求值,计算结果为真时输出true、为假时输出false,不合法的表达时输出error(比如:true true)。表达式求值是注意and 的优先级比 or 要高,比如:true or false and false,等价于 true or (false and false),计算结果是 true。 输入描述: 输入第一行包含布尔表达式字符串s,s只包含true、false、and、or几个单词(不会出现其它的任何单词),且单词之间用空格分隔。 (1 ≤ |s| ≤ 103). 输出描述: 输出true、false或error,true表示布尔表达式计算为真,false表示布尔表达式计算为假,error表示一个不合法的表达式。 示例1 输入
and
输出
error
示例2 输入
true and false
输出
false
示例3 输入
true or false and false
输出
true
思路 这题和简单计算器很像,将or定义为较低的优先级,and定义为较高的优先级(类比+,-,*,/)。true为1,false为0,将中缀表达式转换为后缀表达式,进行计算。 代码