逆波蘭表達式求值
根據逆波蘭表示法,求表達式的值。
有效的運算符包括 +, -, *, / 。每個運算對象可以是整數,也可以是另一個逆波蘭表達式。
說明:
- 整數除法隻保留整數部分。
- 給定逆波蘭表達式總是有效的。換句話說,表達式總會得出有效數值且不存在除數為 0 的情況。
示例 1:
輸入: ["2", "1", "+", "3", "*"]
輸出: 9
解釋: ((2 + 1) * 3) = 9
1 class Solution {
2 public int evalRPN(String[] tokens) {
3 Stack<String> stack=new Stack<String>();
4 int n=tokens.length;
5 for(int i=n-1;i>=0;i--){
6 stack.push(tokens[i]);
7 }
8 String valide="+-*/";
9 int result=0;
10 while(!stack.isEmpty()){
11 String value=stack.pop();
12 if(valide.contains(value)||stack.isEmpty()){
13 continue;
14 }else{
15 String value2=stack.pop();
16 String op=stack.pop();
17 int temp=0;
18 if(op.equals('+')){
19 temp=Integer.valueOf(value)+Integer.valueOf(value2);
20 }else if(op.equals('-')){
21 temp=Integer.valueOf(value)-Integer.valueOf(value2);
22 }else if(op.equals('*')){
23 temp=Integer.valueOf(value)*Integer.valueOf(value2);
24 }else{
25 temp=Integer.valueOf(value)/Integer.valueOf(value2);
26 }
27 stack.push(temp+"");
28 result=temp;
29 }
30 }
31 return result;
32 }
33 }