zoukankan      html  css  js  c++  java
  • leetcode150 Evaluate Reverse Polish Notation

    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:

    ["2", "1", "+", "3", "*"] -> ((2 + 1) * 3) -> 9
    ["4", "13", "5", "/", "+"] -> (4 + (13 / 5)) -> 6

    计算逆波兰表达式,使用一个栈来存储操作数字,遍历输入的链表。

    如果为数字,直接push到栈内,如果为操作符号,就把栈顶的两个元素pop出来运算一下。

    运算的结果push到栈内。

    public class Solution {
        public int evalRPN(String[] tokens) {
            int result = 0;
            Stack<Integer> stack = new Stack<Integer>();
            String operators = "+-*/";
            
            for(int i=0; i<tokens.length;i++){
                if (operators.contains(tokens[i])){
                    int b = stack.pop();
                    int a = stack.pop();
                    stack.push(calculate(a,b,tokens[i]));
                }else{
                    stack.push(Integer.valueOf(tokens[i]));
                }
            }
            result = stack.pop();
            return result;
        }
        
        
        public int calculate(int a, int b, String operator){
            char op = operator.charAt(0);
            switch (op) {
                case '+': return a + b;
                case '-': return a - b;
                case '*': return a * b;
                case '/': return a / b;
            }
            return 0;
        }
    }
  • 相关阅读:
    Java的String类
    Java基本数据类型
    Java历史简介
    Java常量,变量,作用域!强转类型
    JAVA特性与JDK,JRE,JVM!
    JAVA历史简介
    JAVA多线程
    开博了
    quartz学习笔记(一)简单入门
    CentOS-64位安装mysql5.7
  • 原文地址:https://www.cnblogs.com/iwangzheng/p/5694523.html
Copyright © 2011-2022 走看看