题意:逆波兰表达式求值
思路:利用一个栈,遇到数字就进栈,遇到操作符就从栈里弹出两个数字进行计算,并将计算结果压入栈中。
代码:
public int CalNotation(String[] str) {
if(str == null || str.length == 0) return -1;
Stack<Integer>stack = new Stack<>();
int temp = 0;
for(int i = 0 ; i < str.length ; i++){
if(str[i].equals("+") || str[i].equals("-") || str[i].equals("*") || str[i].equals("/") ){
int a = stack.pop();
int b = stack.pop();
if(str[i].equals("+")){
temp = a + b;
}
if(str[i].equals("-")){
temp = a - b;
}
if(str[i].equals("*")){
temp = a * b;
}
if(str[i].equals("/")){
temp = a / b;
}
stack.push(temp);
}else{
stack.push(Integer.parseInt(str[i]));
}
}
return temp;
}