首页 > 试题广场 >

表达式求值

[编程题]表达式求值
  • 热度指数:3046 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解

给出一个布尔表达式的字符串,比如:true or false and false,表达式只包含truefalseandor,现在要对这个表达式进行布尔求值,计算结果为真时输出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
头像 bee71
发表于 2020-11-01 15:55:32
我们要做的就是利用单调栈让栈里至只剩下true,and,or三种字符串,接下来就好比较了。 package bishi; import java.util.Scanner; import java.util.Stack; public class Solution { public st 展开全文