题解 | #牛的表达式计算器#
牛的表达式计算器
https://www.nowcoder.com/practice/261e7f01438f414c92f59c0059d3a906
考察栈的另一个应用,计算器。
根据题目描述一定可以算出一个值,所以说不用考虑栈空的问题,所以和上一道题目一样的操作,当遇到数值的时候就入栈,遇到操作数的时候取出栈顶两个元素进行计算后得到的值继续入栈,最后将栈顶的最终值进行返回即可。
完整Java代码如下所示
import java.util.*;
import java.util.regex.Pattern; //引入正则表达式
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param tokens string字符串一维数组
* @return int整型
*/
public int calculatePostfix (String[] tokens) {
// write code here
Stack<String> stack = new Stack<>();
for(int i=0; i<tokens.length; i++){
String token = tokens[i];
if(Pattern.matches("-?\\d+", token)){
stack.add(token); //是操作数的时候
}
else{ //是操作符的时候
int num1 = Integer.parseInt(stack.pop());
int num2 = Integer.parseInt(stack.pop());
if(token.equals("+")){
stack.add(num1+num2+"");
}
if(token.equals("-")){
stack.add(num2-num1+"");
}
if(token.equals("*")){
stack.add(num1*num2+"");
}
if(token.equals("/")){
stack.add(num2/num1+"");
}
}
}
return Integer.parseInt(stack.pop());
}
}
凡岛公司福利 667人发布