Given an expression string array, return the final result of this expression.
Hint: Shunting-yard algorithm
Example
For the expression 2*6-(23+7)/(1+2)
, input is
[
"2", "*", "6", "-", "(",
"23", "+", "7", ")", "/",
(", "1", "+", "2", ")"
],
return 2
Note
The expression contains only integer
, +
, -
, *
, /
, (
, )
.
public int evaluateExpression(String[] expression) { Stack<String> stack = new Stack<>(); Queue<String> queue = new LinkedList<>(); for(String op:expression) { if("+-*/".contains(op)) { if(!stack.isEmpty() && getPriority(stack.peek()) >= getPriority(op)) { queue.offer(stack.pop()); } stack.push(op); } else if("(".equals(op)) { stack.push(op); } else if(")".equals(op)) { while(!"(".equals(stack.peek())) { queue.offer(stack.pop()); } stack.pop(); } else { queue.offer(op); } } while(!stack.isEmpty()) { queue.offer(stack.pop()); } return evaluateRPN(queue); } private int getPriority(String op) { char c = op.charAt(0); if(c == '+' || c == '-') { return 1; } else if(c=='*' || c=='/') { return 2; } return 0; } private int evaluateRPN(Queue<String> rpn) { Stack<Integer> stack = new Stack<>(); while(!rpn.isEmpty()) { String op = rpn.poll(); if("+-*/".contains(op)) { int result = 0; int b = stack.pop(); int a = stack.pop(); if(op.equals("+")) { result = a + b; } else if(op.equals("-")) { result = a - b; } else if(op.equals("*")) { result = a * b; } else if(op.equals("/")) { result = a / b; } stack.push(result); } else { stack.push(Integer.parseInt(op)); } } if(stack.isEmpty()) return 0; return stack.pop(); }
相关推荐
赠送jar包:spring-expression-5.2.0.RELEASE.jar; 赠送原API文档:spring-expression-5.2.0.RELEASE-javadoc.jar; 赠送源代码:spring-expression-5.2.0.RELEASE-sources.jar; 赠送Maven依赖信息文件:spring-...
开发工具 spring-expression-4.3.6.RELEASE开发工具 spring-expression-4.3.6.RELEASE开发工具 spring-expression-4.3.6.RELEASE开发工具 spring-expression-4.3.6.RELEASE开发工具 spring-expression-4.3.6.RELEASE...
赠送jar包:spring-expression-5.3.15.jar; 赠送原API文档:spring-expression-5.3.15-javadoc.jar; 赠送源代码:spring-expression-5.3.15-sources.jar; 赠送Maven依赖信息文件:spring-expression-5.3.15.pom;...
赠送jar包:spring-expression-5.3.10.jar;赠送原API文档:spring-expression-5.3.10-javadoc.jar;赠送源代码:spring-expression-5.3.10-sources.jar;赠送Maven依赖信息文件:spring-expression-5.3.10.pom;...
赠送jar包:spring-expression-5.3.15.jar; 赠送原API文档:spring-expression-5.3.15-javadoc.jar; 赠送源代码:spring-expression-5.3.15-sources.jar; 赠送Maven依赖信息文件:spring-expression-5.3.15.pom;...
赠送jar包:spring-expression-5.2.7.RELEASE.jar; 赠送原API文档:spring-expression-5.2.7.RELEASE-javadoc.jar; 赠送源代码:spring-expression-5.2.7.RELEASE-sources.jar; 赠送Maven依赖信息文件:spring-...
赠送jar包:spring-expression-5.0.10.RELEASE.jar; 赠送原API文档:spring-expression-5.0.10.RELEASE-javadoc.jar; 赠送源代码:spring-expression-5.0.10.RELEASE-sources.jar; 赠送Maven依赖信息文件:spring...
赠送jar包:spring-expression-5.0.5.RELEASE.jar; 赠送原API文档:spring-expression-5.0.5.RELEASE-javadoc.jar; 赠送源代码:spring-expression-5.0.5.RELEASE-sources.jar; 赠送Maven依赖信息文件:spring-...
赠送jar包:spring-expression-5.0.10.RELEASE.jar; 赠送原API文档:spring-expression-5.0.10.RELEASE-javadoc.jar; 赠送源代码:spring-expression-5.0.10.RELEASE-sources.jar; 赠送Maven依赖信息文件:spring...
spring-expression-4.2.6.RELEASE,欢迎下载,如有疑问,请留意
赠送jar包:spring-expression-4.3.20.RELEASE.jar 赠送原API文档:spring-expression-4.3.20.RELEASE-javadoc.jar 赠送源代码:spring-expression-4.3.20.RELEASE-sources.jar 包含翻译后的API文档:spring-...
spring框架,maven下来的spring-expression-4.3.12.RELEASE.jar
赠送jar包:spring-expression-5.3.10.jar; 赠送原API文档:spring-expression-5.3.10-javadoc.jar; 赠送源代码:spring-expression-5.3.10-sources.jar; 赠送Maven依赖信息文件:spring-expression-5.3.10.pom;...
赠送jar包:spring-expression-4.3.12.RELEASE.jar; 赠送原API文档:spring-expression-4.3.12.RELEASE-javadoc.jar; 赠送源代码:spring-expression-4.3.12.RELEASE-sources.jar; 赠送Maven依赖信息文件:spring...
赠送jar包:spring-expression-5.3.7.jar; 赠送原API文档:spring-expression-5.3.7-javadoc.jar; 赠送源代码:spring-expression-5.3.7-sources.jar; 赠送Maven依赖信息文件:spring-expression-5.3.7.pom; ...
赠送jar包:spring-expression-5.3.12.jar; 赠送原API文档:spring-expression-5.3.12-javadoc.jar; 赠送源代码:spring-expression-5.3.12-sources.jar; 赠送Maven依赖信息文件:spring-expression-5.3.12.pom;...
赠送jar包:spring-expression-5.3.7.jar; 赠送原API文档:spring-expression-5.3.7-javadoc.jar; 赠送源代码:spring-expression-5.3.7-sources.jar; 赠送Maven依赖信息文件:spring-expression-5.3.7.pom; ...
赠送jar包:spring-expression-5.0.5.RELEASE.jar; 赠送原API文档:spring-expression-5.0.5.RELEASE-javadoc.jar; 赠送源代码:spring-expression-5.0.5.RELEASE-sources.jar; 赠送Maven依赖信息文件:spring-...
赠送jar包:spring-expression-5.2.15.RELEASE.jar; 赠送原API文档:spring-expression-5.2.15.RELEASE-javadoc.jar; 赠送源代码:spring-expression-5.2.15.RELEASE-sources.jar; 赠送Maven依赖信息文件:spring...
赠送jar包:spring-expression-4.2.2.RELEASE.jar; 赠送原API文档:spring-expression-4.2.2.RELEASE-javadoc.jar; 赠送源代码:spring-expression-4.2.2.RELEASE-sources.jar; 赠送Maven依赖信息文件:spring-...