关注
贴上菜鸡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
相关推荐
点赞 评论 收藏
分享
点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 2025年终总结 #
124825次浏览 2090人参与
# 实习简历求拷打 #
17514次浏览 199人参与
# 作业帮求职进展汇总 #
84246次浏览 554人参与
# 秋招被挂春招仍然能投的公司 #
8079次浏览 109人参与
# 实习要如何选择和准备? #
128599次浏览 1486人参与
# 外包能不能当跳板? #
54352次浏览 256人参与
# 诺瓦星云求职进展汇总 #
233599次浏览 1736人参与
# mt对你说过最有启发的一句话 #
39548次浏览 454人参与
# 公司情报交流地 #
126765次浏览 1227人参与
# 为了找工作你花了哪些钱? #
74935次浏览 361人参与
# 你觉得机械有必要实习吗 #
69872次浏览 485人参与
# 投格力的你,拿到offer了吗? #
153640次浏览 822人参与
# 一起聊美团 #
307817次浏览 1767人参与
# 什么是优秀的实习经历 #
9610次浏览 227人参与
# 摸鱼被leader发现了怎么办 #
104473次浏览 661人参与
# 京东开奖 #
632188次浏览 3180人参与
# 秋招特别不鸣谢 #
16847次浏览 187人参与
# 考研失败就一定是坏事吗? #
202937次浏览 1392人参与
# 选实习,你更看重哪方面? #
15589次浏览 231人参与
# 安克创新求职进展汇总 #
62511次浏览 541人参与