题解 | #表达式求值#

表达式求值

https://www.nowcoder.com/practice/c215ba61c8b1443b996351df929dc4d4

简单写法,代码简单

import java.util.*;


public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     * 返回表达式的值
     * @param s string字符串 待计算的表达式
     * @return int整型
     */

    int i = 0;
    private int helper(String s) {
        Stack<Integer> st = new Stack<>();
        int num = 0, res = 0;
        char sign = '+';

        for (; i < s.length(); i ++ ) {

            char cur = s.charAt(i);
            if (Character.isDigit(cur)) num = num * 10 + cur - '0';
            if (cur == '(') {
                i ++ ;
                num = helper(s);
            }
            if (cur != ' ' && !Character.isDigit(cur) || i == s.length() - 1) {
                switch(sign) {
                    case '+': st.push(num); break;
                    case '-': st.push(-num); break;
                    case '*': st.push(st.pop() * num); break;
                    case '/': st.push(st.pop() / num); break;
                }
                num = 0;
                sign = cur;
            }
            if (cur == ')') break;
        }
        while (!st.isEmpty()) res += st.pop();
        return res;
    }

    public int solve (String s) {
        // write code here
        i = 0;
        return helper(s);
    }
}

全部评论

相关推荐

双尔:反手回一个很抱歉,经过慎重考虑,您与我的预期暂不匹配,感谢您的投递
点赞 评论 收藏
分享
头像
10-27 15:50
门头沟学院 Java
想进开水团喝开水:有一种店 只能外卖 不能堂食 你猜为什么
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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