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