public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String next = sc.next();
List<String> list = toZhongZhui(next);
List<String> list1 = toHouZhui(list);
int result = getResult(list1);
System.out.println(result);
}
public static List<String> toZhongZhui(String str) {
List<String> list = new ArrayList<>();
int i = 0;
StringBuilder sb;
char ch;
do {
if ((ch = str.charAt(i)) < '0' || (ch = str.charAt(i)) > '9') {
list.add(String.valueOf(ch));
i++;
} else {
sb = new StringBuilder();
while (i < str.length() && (ch = str.charAt(i)) >= '0' && (ch = str.charAt(i)) <= '9') {
sb.append(ch);
i++;
}
list.add(sb.toString());
}
} while (i < str.length());
return list;
}
public static List<String> toHouZhui(List<String> list) {
Stack<String> stack = new Stack<>();
List<String> res = new ArrayList<>();
for (String s : list) {
if (s.matches("\\d+")) {
res.add(s);
} else if (s.equals("(")) {
stack.push(s);
} else if (s.equals(")")) {
while (!stack.peek().equals("(")) {
res.add(stack.pop());
}
stack.pop();
} else {
while (!stack.isEmpty() && Operation.getValue(stack.peek()) >= Operation.getValue(s)) {
res.add(stack.pop());
}
stack.push(s);
}
}
while (!stack.isEmpty()) {
res.add(stack.pop());
}
return res;
}
public static int getResult(List<String> list) {
Stack<Integer> stack = new Stack<>();
int a, b;
for (String s : list) {
if (s.matches("\\d+")) {
stack.push(Integer.valueOf(s));
} else {
if (s.equals("+")) {
a = stack.pop();
b = stack.pop();
stack.push(b + a);
} else if (s.equals("-")) {
a = stack.pop();
b = stack.pop();
stack.push(b - a);
} else if (s.equals("*")) {
a = stack.pop();
b = stack.pop();
stack.push(b * a);
} else {
a = stack.pop();
b = stack.pop();
stack.push(b / a);
}
}
}
return stack.pop();
}
public class Operation {
private static final int ADD = 1;
private static final int SUB = 1;
private static final int MuL = 2;
private static final int DIV = 2;
public static int getValue(String operation) {
int result = 0;
switch (operation) {
case "+":
result = ADD;
break;
case "-":
result = SUB;
break;
case "*":
result = MuL;
break;
case "/":
result = DIV;
break;
}
return result;
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具