import java.util.ArrayList; import java.util.Scanner; import java.util.Stack; public class Main { public static void main(String[] args){ ArrayList<Integer> inputs = new ArrayList<Integer>(); Scanner in = new Scanner(System.in); String line = in.nextLine(); if(line!=null && !line.isEmpty()) { int res = resolve(line.trim()); System.out.println(String.valueOf(res)); } } public static int resolve(String expr) { String[] exprs = expr.split(" "); Stack<Integer> stack = new Stack<>(); for(int i=0;i<exprs.length;i++){ String temp = exprs[i]; if(temp.equals("")){ continue; } if(!(temp.contains("*")||temp.contains("^")||temp.contains("+"))){ if(stack.size()==16){ return -2; } else { stack.push(Integer.valueOf(temp)); } } else { String posibleNumber=""; boolean isNum = false; for(int j=0;j<temp.length();j++){ if(temp.codePointAt(j)>=48&&temp.codePointAt(j)<=57){ posibleNumber+=temp.charAt(j); isNum=true; } else { if(isNum) { if(stack.size()==16){ return -2; } else { stack.push(Integer.valueOf(posibleNumber)); posibleNumber=""; isNum=false; j--; } } else { if(temp.charAt(j) == '^'){ if(stack.size()==0){ return -1; } else { int tempNum = stack.pop()+1; stack.push(tempNum); } } else if(temp.charAt(j) == '+') { if(stack.size()<2){ return -1; } else { int tempA = stack.pop(); int tempB = stack.pop(); stack.push(tempA+tempB); } } else if(temp.charAt(j) == '*'){ if(stack.size()<2){ return -1; } else { int tempA = stack.pop(); int tempB = stack.pop(); stack.push(tempA*tempB); } } } } } if(isNum){ if(stack.size()==16){ return -2; } else { stack.push(Integer.valueOf(posibleNumber)); posibleNumber=""; isNum=false; } } } } if(stack.size()>=1) return stack.pop(); else return -1; } } 通过100%
点赞 评论

相关推荐

KPLACE:首先是板面看起来不够,有很多奖,比我厉害。项目要精减,大概详细描述两到三个,要把技术栈写清楚,分点,什么算法,什么外设,怎么优化,不要写一大堆,分点,你写上去的目的,一是让别人知道你做了这个知识点,然后在面试官技术面的时侯,他知道你会这个,那么就会跟你深挖这个,然后就是个人评价改为专业技能
点赞 评论 收藏
分享
2024-12-18 14:13
蚌埠坦克学院 golang
苏州科技大学:面试官:接个面试,对面同学是个杀软二次元
点赞 评论 收藏
分享
牛客网
牛客企业服务