题解 | #表达式求值#

表达式求值

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

代码简单,代码短

import java.util.*;


public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     * 返回表达式的值
     * @param s string字符串 待计算的表达式
     * @return int整型
     */
    public int solve (String s) {
        // write code here
        i = 0;
        return helper(s);
    }
    int i = 0;

    private int helper(String s) {
        
        int num = 0, res = 0;
        char sign = '+';
        Stack<Integer> st = new Stack<>();
        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;
    }
}

全部评论

相关推荐

小肥罗:此乃引蛇出洞之计,勾出你想去杭州的原因再告诉你不在杭州,让你打脸,自己离开。好一招抛砖引玉,虾仁猪心。你回复:计划去杭州,但我心中第一选择是宁波~巧了! 这计名叫“阿Q精神胜利法之厚脸皮不要脸我不尴尬谁爱尴尬谁尴尬去”之计!克制一切!
这个工作能去吗
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

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