关注
贴上菜鸡Java第一题代码,看到多行数据就改了下循环,脑子抽了没把代码里的 return 去掉,结束了才看见。。怪不得读不到多行的数据(awsl)。只过了50%,但我觉得应该能ac,欢迎指错讨论。 import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while(sc.hasNext()) {
String[] arr = sc.nextLine().split("\\s+");
// 首先把 error 的情况搞出来
// and or 不能开头,不能结尾
// true false 类别不能连续
// and or 类别也不能连续
boolean preIsAndOr = true;
boolean error = false;
for(int i = 0; i < arr.length; i ++) {
String s = arr[i];
if(preIsAndOr && ("and".equals(s) || "or".equals(s))) {
error = true;
} else if(!preIsAndOr && ("true".equals(s) || "false".equals(s))) {
error = true;
}
preIsAndOr = "and".equals(s) || "or".equals(s) ? true : false;
}
if(error || preIsAndOr) {
System.out.println("error");
continue;
}
// 能到这,说明序列本身已经没有问题了。
// 碰到 and 直接算
LinkedList<String> stack = new LinkedList<>();
for(int i = 0; i < arr.length; i ++) {
String s = arr[i];
if("true".equals(s) || "false".equals(s)) {
stack.push(s);
} else if("and".equals(s)) {
String pre = stack.pop();
String next = arr[++ i];
if("false".equals(next) || "false".equals(pre)) {
stack.push("false");
} else {
stack.push("true");
}
}
}
// 栈里的都当 or 处理
String res = "false";
for(String s : stack) {
if("true".equals(s)) {
res = "true";
break;
}
}
System.out.println(res);
}
}
}
查看原帖
点赞 5
相关推荐

点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 26届的你们有几段实习? #
24578次浏览 318人参与
# 你后悔自己读研吗? #
10432次浏览 184人参与
# 你被哪些公司秒挂过? #
20694次浏览 189人参与
# 月薪多少能在一线城市生存 #
12612次浏览 185人参与
# 如何提高实习转正率? #
8280次浏览 136人参与
# 你认为哪些项目算烂大街? #
10230次浏览 214人参与
# 你以为的实习VS真实的实习 #
13687次浏览 140人参与
# 当下环境,你会继续卷互联网,还是看其他行业机会 #
115408次浏览 801人参与
# 面试体验感最好的是哪家? #
222059次浏览 2368人参与
# 最难的技术面是哪家公司? #
6741次浏览 61人参与
# 机械人,你拿到几个offer啦 #
37701次浏览 312人参与
# 产品实习,你更倾向大公司or小公司 #
158697次浏览 1962人参与
# 找工作时的取与舍 #
81636次浏览 584人参与
# 你小时候最想从事什么职业 #
103139次浏览 1785人参与
# 机械校招之路总结 #
92570次浏览 1891人参与
# 网申一定要掌握的小技巧 #
9830次浏览 66人参与
# 双非能在秋招上岸吗? #
219055次浏览 1159人参与
# 金三银四,你有感觉到吗 #
603660次浏览 5913人参与
# 机械制造岗投递时间线 #
23897次浏览 352人参与
# 设计人的面试记录 #
128699次浏览 1355人参与