题目描述
给你一个字符串数组 tokens ,表示一个根据 逆波兰表示法 表示的算术表达式。
请你计算该表达式。返回一个表示表达式值的整数。
示例
提交的代码
import java.util.Deque;
import java.util.LinkedList;
class Solution {
public int evalRPN(String[] tokens) {
Deque<Integer> stack=new LinkedList<>();
Integer firstInt=0;
Integer secondInt=0;
for(String str:tokens){
if("+".equals(str)){
stack.push(stack.pop()+stack.pop());
}else if("-".equals(str)){
secondInt=stack.pop();
firstInt=stack.pop();
stack.push(firstInt-secondInt);
}else if("*".equals(str)){
stack.push(stack.pop()*stack.pop());
}else if("/".equals(str)){
secondInt=stack.pop();
firstInt=stack.pop();
stack.push(firstInt/secondInt);
}else{
stack.push(Integer.valueOf(str));
}
}
return stack.peek();
}
}
思想
其实没什么思想,数据结构里面的例题,遇到数字就入栈,遇到运算符就将栈中的两个数字出栈并进行相应的运算,运算的结果重新返回栈中,但是在运算-和/运算的时候,要注意栈的特性,第一个出栈的数字是运算的后位数。
标签:LeetCode150,firstInt,pop,push,secondInt,str,求值,stack,表达式 From: https://www.cnblogs.com/whitePuPigeon/p/17801148.html