class Solution {
public int evalRPN(String[] tokens) {
//创建一个栈,只需要一个栈即可
Stack<Integer> stack = new Stack<>();
//遍历 ls
for(String item:tokens){
//这里使用正则表达式来取出数
if(isNumber(item)){
//匹配的是多位数
//入栈
stack.push(Integer.parseInt(item));
}else {
//pop出两个数,并运算,再入栈
int num2=stack.pop();
int num1=stack.pop();
int res=0;
if(item.equals("+")){
res=num1+num2;
}else if(item.equals("-")){
res=num1-num2;
}else if(item.equals("*")){
res=num1*num2;
}else if(item.equals("/")){
res=num1/num2;
}
//把res入栈
stack.push(res);
}
}
//最后留在stack中的数据就是运算结果
return stack.pop();
}
public boolean isNumber(String token) {
return !("+".equals(token) || "-".equals(token) || "*".equals(token) || "/".equals(token));
}
}
注意点:
字符串转化为数字
方式一
方式二