【华为OJ】逆波兰

描述: 
逆波兰记法中,操作符置于操作数的后面。例如表达“三加四”时,写作“3 4 +”,而不是“3 + 4”。如果有多个操作符,操作符置于第二个操作数的后面,所以常规中缀记法的“3 - 4 + 5”在逆波

兰记法中写作3 4 - 5 +”:先3减去4,再加上5。使用逆波兰记法的一个好处是不需要使用括号。

请编写Java函数计算逆波兰表达式的结果。

输入一个逆波兰表达式,

1、操作数类型为正的double数,符合java的double常量规范,不同的操作数以空格或者运算符分开;

2、支持四则运算,即运算符包括+,-,*,/。

输出为计算结果

如输入为 “1 2 + 3 *”,则输出为“9.0”

考试要点:

1.能正确处理简单的表达式(50分),如计算 1.0 2 + 的结果为 3.0

2.能正确处理不同的操作符(30分),如计算 1 2 + 3 * 的结果为 9.0
3.能正确识别输入的逆波兰表达式中的语法错误(10分),如输入为 1+ 则抛出

RPNSyntaxErrorException 异常

4.能正确识别输入的逆波兰表达式中的除零错误(10分),如输入为 1 2 2 -/ 则

抛出 DevideByZeroException 异常

知识点:                
 
题目来源: 内部整理 
练习阶段: 高级 
运行时间限制: 10Sec
内存限制: 128MByte
输入:

输入算式,数字字符之间以空格隔开

输出:

输出计算结果

样例输入:
1 2 + 3 *
样例输出:
9.0
答案提示:

【华为OJ】逆波兰

时间: 2024-11-23 16:58:17

【华为OJ】逆波兰的相关文章

【华为OJ】【065-字符逆序】

[华为OJ][算法总篇章] [华为OJ][065-字符逆序] [工程下载] 题目描述 将一个字符串str的内容颠倒过来,并输出.str的长度不超过100个字符. 如:输入"I am a student",输出"tneduts a ma I". 输入参数: inputString:输入的字符串 返回值: 输出转换好的逆序字符串 输入描述 输入一个字符串,可以有空格 输出描述 输出逆序的字符串 输入例子 I am a student 输出例子 tneduts a ma

ZSTU OJ 4189 逻辑运算(逆波兰式)

Description 还记得大学里学过的模电么,今天就让我们将与或非变成一道题吧. 给你一个与或非的表达式,求出这个表达式的值,表达式总共有八种字符. 三种逻辑运算符按照优先级排列如下. '!':表示取反. '&':逻辑与. '|':逻辑或. 两个字符'T','F'分别表示true和 false. 另外还有左右括号,空格三种字符.跟一般的表达式一样,括号可以改变优先级. Input 每组数据输入一行字符串,字符串长度小于等于100. Output 输出一个数0或1,表示逻辑表达式的答案. Sa

LeetCode之逆波兰式求解

计算逆波兰式子: 有效的操作只有 +, -, *, /. 每一个输入不是一个整数就是一个操作符. Some examples: ["2", "1", "+", "3", "*"] -> ((2 + 1) * 3) -> 9 ["4", "13", "5", "/", "+"] -> (4 +

【华为OJ】201301 JAVA 题目0-1级 将数组分为相等的两组

描述:  编写一个函数,传入一个int型数组,返回该数组能否分成两组,使得两组中各元素加起来的和相等,并且,所有5的倍数必须在其中一个组中,所有3的倍数在另一个组中(不包括5的倍数),能满足以上条件,返回true:不满足时返回false. 知识点: 语言基础,字符串,循环,函数,指针,枚举,位运算,结构体,联合体,文件操作,递归    题目来源: 内部整理  练习阶段: 初级  运行时间限制: 10Sec 内存限制: 128MByte 输入: 输入输入的数据个数 输入一个int型数组 输出: 返

HDU1237 简单计算器 【栈】+【逆波兰式】

版本:1.0 日期:2014.5.17 2014.6.1 版权:© 2014 kince 转载注明出处 在介绍SwitchButton之前,先来看一下系统Button是如何实现的.源码如下: @RemoteView public class Button extends TextView { public Button(Context context) { this(context, null); } public Button(Context context, AttributeSet att

逆波兰表达式

1696:逆波兰表达式 总时间限制: 1000ms 内存限制: 65536kB 描述 逆波兰表达式是一种把运算符前置的算术表达式,例如普通的表达式2 + 3的逆波兰表示法为+ 2 3.逆波兰表达式的优点是运算符之间不必有优先级关系,也不必用括号改变运算次序,例如(2 + 3) * 4的逆波兰表示法为* + 2 3 4.本题求解逆波兰表达式的值,其中运算符包括+ - * /四个. 输入 输入为一行,其中运算符和运算数之间都用空格分隔,运算数是浮点数. 输出 输出为一行,表达式的值.可直接用prin

中缀输入逆波兰计算器程序part1

在看K&R的时候,里面提到了逆波兰表示法,老实说看得我迷迷糊糊的,主要是这种反人类的后缀表示法做出的计算器,一般人根本就不知道怎么输入好吧.今天看书的时候,看到了将中缀表达式转为后缀表达式的方法才恍然大悟,原来是少了这一步.这下我就知道该如何做一个可用的逆波兰计算器了. 先简单介绍一下如何完成这步转换吧.中缀表达式就是我们习惯的表达式,比如:1+2*3 考虑运算符优先级的话后缀表达式则应该写成123*+ 写成后缀表达式的形式后我们可以利用栈轻松地解决计算问题,思路是当见到一个数时就把它推入栈:在

lintcode 中等题:Evaluate Reverse Polish notation逆波兰表达式求值

题目 逆波兰表达式求值 在逆波兰表达法中,其有效的运算符号包括 +, -, *, / .每个运算对象可以是整数,也可以是另一个逆波兰计数表达. 样例 ["2", "1", "+", "3", "*"] -> ((2 + 1) * 3) -> 9 ["4", "13", "5", "/", "+"]

使用逆波兰式进行表达式求值

中缀表达式及后缀表达式图解中说明了使用逆波兰式进行表达式求值的方法,这里使用C++进行实现.实现和原理讲解有一点不同,需要进一步进行细化. 关于将中缀表达式转换成后后缀表达式的规则: 规则:从左到右遍历中缀表达式的每个数字和符号,若是数字就输出,即成为后缀表达式的一部分:若是符号,则判断其与栈顶符号的优先级,是右括号或优先级低于找顶符号(乘除优先加减)则栈顶元素依次出找并输出,并将当前符号进栈,一直到最终输出后缀表达式为止. 上面的规则转换成下面的执行规则: 1.遇到操作数:直接输出(添加到后缀