天天看點

LeetCode150—逆波蘭表達式求值 (java版)

題目描述:

标簽:棧 

根據 逆波蘭表示法,求表達式的值。

有效的運算符包括 +, -, *, / 。每個運算對象可以是整數,也可以是另一個逆波蘭表達式。

說明:

整數除法隻保留整數部分。

給定逆波蘭表達式總是有效的。換句話說,表達式總會得出有效數值且不存在除數為 0 的情況

 代碼:

思路分析:逆波蘭表達式求值

1、建一個棧。

2、利用增強for循環周遊,如果目前字元為數字,則壓入棧中;如果目前字元為“+、-、* 、/”運算符,則彈出兩個元素進行運算,并将運算結果壓入棧中。

3、注意String 和 Integer 之間的 類型轉換

class Solution {
    public int evalRPN(String[] tokens) {
        Stack<Integer> stack = new Stack<>();
        for(String s : tokens){
            if(s.equals("+")){
                stack.push(stack.pop() + stack.pop());
            }else if(s.equals("-")){
                stack.push(-stack.pop() + stack.pop());
            }else if(s.equals("*")){
                stack.push(stack.pop() * stack.pop());
            }else if(s.equals("/")){
                int num1 = stack.pop();
                stack.push(stack.pop() / num1);
            }else{
                stack.push(Integer.parseInt(s));
            }
        }
        return stack.pop();
    }
}