Evaluate Reverse Polish Notation

来源:互联网 发布:windows 自动点击 编程 编辑:程序博客网 时间:2024/06/07 08:40

Evaluate the value of an arithmetic expression in Reverse Polish Notation.

Valid operators are +-*/. Each operand may be an integer or another expression.

Some examples:

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);}}


0 0