例子: ["2", "1", "+", "3", "*"] -> ((2 + 1) * 3) -> 9 ["4", "13", "5", "/", "+"] -> (4 + (13 / 5)) -> 6
题意为 参数 a,b 运算符,对其运算,正好利用栈的性质,没读到操作符的时候,入栈,匹配到操作符,就弹出参数,进行运算,运算完再入栈,最后返回栈顶元素。
public class Solution {
public int evalRPN(String[] tokens) {
Stack<Integer> s = new Stack<Integer>();//栈
for(int i=0;i<tokens.length;i++){
if(tokens[i].equals("+")||tokens[i].equals("-")||tokens[i].equals("*")||tokens[i].equals("/")){
int y=s.pop();
int x=s.pop();
s.push(Calculate(tokens[i],x,y));
}
else{
s.push(Integer.parseInt(tokens[i]));//把不是运算符的存储在栈里面
}
}
return s.pop();
}
public int Calculate(String str,int a,int b){
switch(str){
case"+":
return a+b;
case"-":
return a-b;
case"*":
return a*b;
case"/":
return a/b;
default:
return 0;
}
}
}