LeetCode 150. Evaluate Reverse Polish Notation (逆波兰表达式求值)

题目标签:Stack

  利用stack的性质,遍历array,遇到数字就存入stack,遇到运算符号就 从stack pop 出两个数字 计算后 存入回stack,最后返回stack 里的答案。

  

 

Java Solution: 

Runtime:  24 ms, faster than 5.85% 

Memory Usage: 42.2 MB, less than 6.00 %

完成日期:4/25/2020

关键点:Stack

class Solution {
    public int evalRPN(String[] tokens) {
        Stack<Integer> st = new Stack<>();
        
        for(String s : tokens) {
            // if number, push into stack
            if(s.matches("-?\\d+")) {
                st.push(Integer.parseInt(s));
            } else {
                // if operator, calculate it and push it into stack
                int b = st.pop(); 
                int a = st.pop();
                
                if(s.equals("+")) 
                    st.push(a + b);
                else if(s.equals("-"))
                    st.push(a - b);
                else if(s.equals("*"))
                    st.push(a * b);
                else if(s.equals("/"))
                    st.push(a / b);
            }
        }
        
        return st.pop();
    }
}

参考资料:n/a

LeetCode 题目列表 - LeetCode Questions List

题目来源:https://leetcode.com/

posted @ 2020-04-26 06:55  Jimmy_Cheng  阅读(184)  评论(0编辑  收藏  举报