package com.nowcoder.huawei;

import java.util.*;

public class LISP {
// 只通过80%
// (+ (* 2 3) (^ 4))
// (+ (* 2 3) (^ 4))(2 3)
// ((+ 2 3)
// ((+ 2 3))
// (^ (+ (* 2 3) (^ ((^ 4)))))
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String express = scanner.nextLine(); Stack<Character> stack = new Stack<>();
for (int i = 0; i < express.length(); i++) {
char c = express.charAt(i);
if (c == ')') {
StringBuilder builder = new StringBuilder();
char top;
while (!stack.empty() &&(top = stack.pop()) != '(') {
builder.append(top);
} String currExp = builder.reverse().toString();
// System.out.println(currExp); String[] ops = currExp.split(" ");
if (ops.length == 2) {
int value = Integer.valueOf(ops[1]);
value++;
String count = String.valueOf(value);
for (int j = 0; j < count.length(); j++) {
stack.push(count.charAt(j));
}
} else if (ops.length == 3) {
int a = Integer.valueOf(ops[1]);
int b = Integer.valueOf(ops[2]);
int value = 0;
switch (ops[0]) {
case "+":
value = a + b;
break;
case "*":
value = a * b;
break;
}
String count = String.valueOf(value);
for (int j = 0; j < count.length(); j++) {
stack.push(count.charAt(j));
}
} else if (ops.length == 1) {
for (int j = 0; j < ops[0].length(); j++) {
stack.push(ops[0].charAt(j));
}
} } else {
stack.push(c);
}
} StringBuilder builder = new StringBuilder();
while (!stack.empty())
builder.append(stack.pop()); try {
System.out.println(Integer.valueOf(builder.reverse().toString()));
} catch (Exception e) {
System.out.println(-1);
}
}
}

最新文章

  1. Go语言学习笔记1 变量,类型以及赋值
  2. angular一些冷门的用法
  3. 01分数规划POJ2976(简单模板题)
  4. JS可以做什么,它的能力范围 View----------Request/Submit------------------Server
  5. 无法打开物理文件xxx.mdf 操作系统错误 5:“5(拒绝访问。)” (Microsoft SQL Server,错误: 5120) 的解决方法
  6. uva 11986
  7. WebGoat视频教程下载
  8. 南阳acm奇偶数分离
  9. delegate 中的BeginInvoke和EndInvoke方法
  10. yum 安装 kvm
  11. Apache https 配置指南
  12. 函数call相关[ASM]
  13. JAVA JNI
  14. Android呼叫开发系列WebService
  15. 【leetcode】557. Reverse Words in a String III
  16. [随时更新] Git的过滤规则 .gitignore 配置
  17. .net平台性能很不错的轻型ORM类Dapper
  18. 开源 java CMS - FreeCMS2.2 单位管理
  19. IE文字重复显示的处理
  20. 一个网站同一域名不同目录下的文件访问到的cookie值不同是什么原因?

热门文章

  1. C++重写(覆盖)、重载、重定义、多态
  2. shell 變數
  3. 《你不知道的JavaScript(上)》笔记——关于this
  4. PHP中smarty与MYSQL数据库的连接
  5. Python中elasticsearch插入和更新数据的实现方法
  6. Leetcode之并查集专题-684. 冗余连接(Redundant Connection)
  7. bootstrap基础学习【网格系统】(三)
  8. JS中删除数组中的元素方法
  9. ZoomEye
  10. Docker 安装 Tomcat