题解 | #表达式求值#
表达式求值
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); } }