您的位置:首页 > 编程语言 > Lua

Evaluate Reverse Polish Notation

2014-05-04 18:59 295 查看
Evaluate the value of an arithmetic expression in Reverse Polish Notation.Valid operators are [code]+
,
-
,
*
,
/
. Each operand may be an integer or another expression.Some examples:
[/code]
import java.util.Scanner;
import java.util.Stack;
public class Solution {
public static int evalRPN(String[] tokens) {
String op3="+-*/";
Stack num= new Stack();
int result=0;
int index=0;
int op=0;
int op2=0;
for(int i=0;i<tokens.length;i++){
if(op3.contains(tokens[i])){
op=Integer.valueOf(num.pop().toString());
op2=Integer.valueOf(num.pop().toString());

index=op3.indexOf(tokens[i]);
switch(index)
{
case 0:result=op2+op;num.push(result);break;
case 1:result=op2-op;num.push(result);break;
case 2:result=op*op2;num.push(result);break;
case 3:if(op==0)return 0;
result=op2/op;num.push(result);break;
}
}else{
num.push(tokens[i]);
}
}
result=Integer.valueOf(num.pop().toString());
return result;
}
public static void main(String[] args) {
String exp;
String[] exp2;
char[] ch=null;
int result;
Scanner scan=new Scanner(System.in);
exp=scan.nextLine();
exp2=exp.split(" ");
result=evalRPN(exp2);
System.out.println(result);
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: