根據 逆波蘭表示法,求表達式的值。
有效的算符包括 +、-、*、/ 。每個運算對象可以是整數,也可以是另一個逆波蘭表達式。
說明:
整數除法只保留整數部分。
給定逆波蘭表達式總是有效的。換句話說,表達式總會得出有效數值且不存在除數為 0 的情況。
示例 1:
輸入:tokens = [“2”,“1”,"+",“3”,"*"]
輸出:9
解釋:該算式轉化為常見的中綴算術表達式為:((2 + 1) * 3) = 9
解題思路
當遇到運算符時將棧頂兩個元素入棧,再將運算的結果入棧
代碼
class Solution {public int evalRPN(String[] tokens) {Stack<Integer> stack = new Stack<>();for (int i = 0; i < tokens.length; i++) {if(tokens[i].equals("*"))stack.push(stack.pop()*stack.pop());else if(tokens[i].equals("/")){int pre=stack.pop();stack.push(stack.pop()/pre);}else if(tokens[i].equals("+"))stack.push(stack.pop()+stack.pop());else if(tokens[i].equals("-")){int pre=stack.pop();stack.push(stack.pop()-pre);}else stack.push(Integer.valueOf(tokens[i]));}return stack.peek();}
}