LeetCode150——逆波蘭表示式求值
阿新 • • 發佈:2019-01-12
我的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解題報告: