LeetCode.150 逆波兰表达式求值

时间:2023-02-02 15:59:21

1.题目

给你一个字符串数组 ​​tokens​​​ ,表示一个根据 ​​逆波兰表示法​​ 表示的算术表达式。

请你计算该表达式。返回一个表示表达式值的整数。

2.代码

class Solution {
public int evalRPN(String[] tokens) {
Deque<Integer> stack = new LinkedList<>();
for(int i=0; i<tokens.length; i++){
if(tokens[i].equals("+")){//这里一定要注意是数组中的元素跟+号比,不是i啊!!!i是int类型的啊!
stack.push(stack.pop()+stack.pop());//有趣!添加进来的是抛出去的和
}else if("-".equals(tokens[i])){
stack.push(-stack.pop()+stack.pop());//注意这里要分清是谁减谁,先出栈的应该是被减数
}else if("*".equals(tokens[i])){
stack.push(stack.pop()*stack.pop());
}else if("/".equals(tokens[i])){
int temp1 = stack.pop();//这里注意最后要获得的是相除之后获得的整数,那么就可以先把每一个数先变成整数,再相除!
int temp2 = stack.pop();
stack.push(temp2/temp1);//谁除谁也要注意顺序
}else{
stack.push(Integer.valueOf(tokens[i]));//注意这里实现把字符串变成int的包装类Integer,如果是变成int,就用Integer.parseInt(String s)!!
}
}
return stack.pop();//最后栈里面应该只剩下一个元素,直接返回即可!!

}
}