题解 | #牛的表达式计算器#

牛的表达式计算器

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());
    }
}

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务