关注
写的挺工整的。但是有冗余部分,可以合并一下 import java.util.*; public class Main { public static void main(String[] args) { Scanner scan = new Scanner(System.in); while (scan.hasNext()) { String s = scan.nextLine(); s = s.replace("[", "("); s = s.replace("{", "("); s = s.replace("]", ")"); s = s.replace("}", ")"); int res = solution(s); System.out.println(res); } } public static int solution(String s) { char ops = '+'; Stack<integer> stack = new Stack<>(); for (int i = 0; i < s.length(); i++) { char c = s.charAt(i); if (c == ' ') continue; if (c == '+' || c == '-' || c == '*' || c == '/') { ops = c; continue; } int num = 0; if (Character.isDigit(c)) { while (i < s.length() && Character.isDigit(s.charAt(i))) { num = num * 10 + s.charAt(i) - '0'; i++; } i--; } else if (c == '(') { int left = i; int right = i + 1; int count = 1; while (right < s.length() && count > 0) { if (s.charAt(right) == '(') count++; else if (s.charAt(right) == ')') count--; right++; } i = right - 1; num = solution(s.substring(left + 1, right - 1)); } if (ops == '+') stack.push(num); else if (ops == '-') stack.push(-num); else if (ops == '*') stack.push(stack.pop() * num); else if (ops == '/') stack.push(stack.pop() / num); } int res = 0; while (!stack.isEmpty()) res += stack.pop(); return res; } }</integer>
点赞
相关推荐
点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 月薪多少能在一线城市生存 #
79037次浏览 531人参与
# 你会为了工作牺牲生活吗? #
60914次浏览 424人参与
# 百度秋招 #
38250次浏览 334人参与
# 如果再来一次,你还会选择这个工作吗? #
705098次浏览 5730人参与
# 秋招吐槽大会 #
7754次浏览 87人参与
# offer帮选 #
4348694次浏览 26372人参与
# 技术转行的心路历程 #
73055次浏览 745人参与
# 你找工作想离家近 or 离家远? #
1619次浏览 32人参与
# 总结:哪家公司最喜欢泡池子 #
151465次浏览 543人参与
# 小米编程考试 #
23288次浏览 145人参与
# 你小时候最想从事什么职业 #
134662次浏览 1991人参与
# 互联网行业现在还值得去吗 #
38406次浏览 282人参与
# 虾皮开奖 #
45611次浏览 213人参与
# 滴滴歧视残疾人HR被开除 #
23905次浏览 86人参与
# 京东工作体验 #
19441次浏览 113人参与
# 26届的你们有几段实习? #
153299次浏览 1068人参与
# 25届非技术实习投递记录 #
137415次浏览 1001人参与
# 落户对你的求职选择影响有多大 #
30153次浏览 101人参与
# 机械人,秋招第一次笔试的企业是哪家? #
79850次浏览 611人参与
# 你认为工作的意义是什么 #
211067次浏览 1354人参与
# 大疆求职进展汇总 #
631482次浏览 4262人参与


联想公司福利 1548人发布