天天看點

Leetcode 150.逆波蘭表達式求值

逆波蘭表達式求值

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

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

說明:

  • 整數除法隻保留整數部分。
  • 給定逆波蘭表達式總是有效的。換句話說,表達式總會得出有效數值且不存在除數為 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 }