4.1.4 Evaluate Reverse Polish Notation

来源:互联网 发布:linux 开启telnet 编辑:程序博客网 时间:2024/06/05 04:48

原题链接:https://oj.leetcode.com/problems/evaluate-reverse-polish-notation/

这题简单。基本一次过。注意pop 出stack的时候,先pop出来的是operand2, 后出来的是operand1 (因为是operand1先进栈)

public class Solution {    public int evalRPN(String[] tokens) {        Stack<String> stack = new Stack<String>();        for(int i = 0; i < tokens.length; i++){            String token = tokens[i];            if(isOperator(token)){                int result = 0;                int operand1 = 0;                int operand2 = 0;                if(!stack.isEmpty()){                    operand2 = Integer.parseInt(stack.pop());                    operand1 = Integer.parseInt(stack.pop());                }                if(token.equals("+")){                    result = operand1 + operand2;                }                 if(token.equals("-")){                    result = operand1 - operand2;                }                if(token.equals("*")){                    result = operand1 * operand2;                }                 if(token.equals("/")){                    result = operand1 / operand2;                }                stack.push(Integer.toString(result));                            }            else{                stack.push(token);            }        }        return Integer.parseInt(stack.peek());    }        private boolean isOperator (String token) {        if(token.equals("+")|| token.equals("-") || token.equals("*") || token.equals("/")){            return true;        }        else return false;    }}

Note: 11.4.2014

没有一次过。注意要判断isOperator, 而不是isNumber

0 0