问题
例子
思路
-
方法1
遍历逆波兰表达式,如果是数字,放入栈中,如果是操作符,则从栈中取出两个树,操作后,再放入栈。
最后栈中剩下一个元素 -
方法2
代码
//方法1
class Solution {
public int evalRPN(String[] arr) {
Stack<Integer> st = new Stack<>();
String signs = "+-*/";
for(String s : arr) {
//是符号
if(signs.indexOf(s)>-1){
int b = st.pop();
int a = st.pop();
switch(s) {
case "+":
st.push(a+b);break;
case "-":
st.push(a-b);break;
case "*":
st.push(a*b);break;
case "/":
st.push(a/b);break;
}
}
//是数字
else st.push(Integer.valueOf(s));
}
return st.pop();
}
}
//方法2