// write your code here public static int resolve(String expr) { String[] tokens = expr.split(" "); int length = tokens.length; Stack<Integer> stack = new Stack<>(); int a , b , c; for (int i = 0; i < length; i++) { if( !isOperator(tokens[i]) ) { stack.push(Integer.parseInt(tokens[i])); } else { if(!isSelfIncress(tokens[i])) { try { a = stack.pop(); b = stack.pop(); c = getRS(b, a, tokens[i]) ; if(stack.size() > 16) return -2; stack.push(c); } catch (EmptyStackException e) { return -1; } } if(isSelfIncress(tokens[i])) { try { a = 0; b = stack.pop(); c = getRS(b, a, tokens[i]) ; if(stack.size() > 16) return -2; stack.push(c); } catch (EmptyStackException e) { return 1; } } } } return stack.peek(); } public static boolean isOperator(String string) { if("+".equals(string) || "*".equals(string) || "^".equals(string) ) { return true; } else return false; } public static boolean isSelfIncress(String string) { if("^".equals(string) ) { return true; } else { return false; } } public static int getRS(int a ,int b , String operator){ if("+".equals(operator)) { return a + b; } else if("*".equals(operator)) { return a * b; } else if("^".equals(operator)) { return ++a; } return 0; } 我是通过catch异常和判断是否大于16来判断上下溢出的。
点赞 评论

相关推荐

求面试求offer啊啊啊啊:1600一个月?
点赞 评论 收藏
分享
牛客网
牛客企业服务