leetcode evaluate-reverse-polish-notation 逆波蘭式求值-java棧/字符串轉Integer

一、Java Stack 類

棧是Vector的一個子類,它實現了一個標準的後進先出的棧。

堆棧只定義了默認構造函數,用來創建一個空棧。 堆棧除了包括由Vector定義的所有方法,也定義了自己的一些方法。

(上圖來自菜鳥教程)

二、Java String-Integera

①String str = "2333";     Integer a = Integer.valueOf(str);

②Integer a = 233;String str = String.valueOf(a);

 

import java.util.*;
public class Solution {
    public int evalRPN(String[] tokens) {
        Stack<Integer> sk = new Stack<>();
        int ans, a, b;
        for(String t : tokens) {
            if("+".equals(t)) {
                if(!sk.empty()) a = sk.pop();
                else return -1;
                if(!sk.empty()) b = sk.pop();
                else return -1;
                sk.push(a+b);
            }
            else if("-".equals(t)) {
                if(!sk.empty()) a = sk.pop();
                else return -1;
                if(!sk.empty()) b = sk.pop();
                else return -1;
                sk.push(b-a);
            }
            else if("*".equals(t)) {
                if(!sk.empty()) a = sk.pop();
                else return -1;
                if(!sk.empty()) b = sk.pop();
                else return -1;
                sk.push(a*b);
            }
            else if("/".equals(t)) {
                if(!sk.empty()) a = sk.pop();
                else return -1;
                if(!sk.empty()) b = sk.pop();
                else return -1;
                sk.push(b/a);
            }
            else {
                sk.push(Integer.valueOf(t));
            }
        }
        if(!sk.empty()) ans = sk.pop();
        else return -1;
        if(!sk.empty()) return -1;
        return ans;
    }
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章