【算法】逆波蘭式求值


逆波蘭式求值

概念:

前綴表達式(波蘭式):二元運算符總是置于與之相關的兩個運算對象之前,所以,這種表示法也稱為前綴表達式。例子:+12。
中綴表達式:例子:1+2
后綴表達式(逆波蘭式):例子:21+。

解題思路:

利用數據結構,遍歷數組。
1、遇見數字,直接入棧。
2、遇見符號:
a、彈出棧頂的右操作數。
b、彈出棧頂的左操作數。
c、符號轉換為運算符,2個數字計算并將結果入棧。
3、遍歷結束則棧中的唯一數字就是最后的結果值。

Java版:

 public int evalRPN(String[] tokens) {
        Stack<Integer> stack = new Stack<Integer>();
        
        for (int i = 0; i < tokens.length; i++) {
            switch (tokens[i]) {
            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 pre = stack.pop();
                stack.push(stack.pop() / pre);
                break;
            default:
                stack.push(Integer.valueOf(tokens[i]));
                break;
            }
        }
        
        return stack.pop();
    }

Objective-C版:

OC版的解法

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容