1. 程式人生 > >LeetCode150——逆波蘭表示式求值

LeetCode150——逆波蘭表示式求值

我的LeetCode程式碼倉:https://github.com/617076674/LeetCode

原題連結:https://leetcode-cn.com/problems/evaluate-reverse-polish-notation/description/

題目描述:

知識點:逆波蘭表示式求值、棧

思路:逆波蘭表示式求值

逆波蘭表示式的計算規則:

從左往右遍歷表示式的每個數字和符號,遇到是數字就進棧, 遇到是符號,就將處於棧頂兩個數字出棧,進行運算,運算結果進棧,一直到最終獲得結果。

時間複雜度和空間複雜度均是O(n),其中n為輸入的字串陣列的大小。

JAVA程式碼:

public class Solution {
    public int evalRPN(String[] tokens) {
        LinkedList<Integer> stack = new LinkedList<>();
        for(String string : tokens){
            switch (string){
                case "+":
                    stack.push(stack.pop() + stack.pop());
                    break;
                case "-":
                    stack.push(- stack.pop() + stack.pop());
                    break;
                case "*":
                    stack.push(stack.pop() * stack.pop());
                    break;
                case "/":
                    Integer num1 = stack.pop();
                    Integer num2 = stack.pop();
                    stack.push(num2 / num1);
                    break;
                default:
                    stack.push(Integer.parseInt(string));
            }
        }
        return stack.pop();
    }
}

LeetCode解題報告: