关注
贴上菜鸡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
相关推荐
点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# Agent面试会问什么? #
25765次浏览 980人参与
# 哪些公司一直卡在简历筛选 #
101123次浏览 317人参与
# 厦门银行科技岗值不值得投 #
18421次浏览 420人参与
# 给工作过的公司写一条大众点评,你会怎么写? #
8814次浏览 123人参与
# 说说你知道的学历厂 #
397004次浏览 1403人参与
# 烂工作和没工作哪个更痛苦? #
16688次浏览 253人参与
# 通信/硬件的薪资开多少,才值得去? #
75886次浏览 400人参与
# 平台or薪资 硬件uu更看重哪个 #
166797次浏览 622人参与
# 一人分享一个skill #
6683次浏览 182人参与
# 春招至今,你收到几个面试了? #
67919次浏览 909人参与
# 一人说一个提前实习的好处 #
122664次浏览 715人参与
# 巨人网络求职进展汇总 #
193565次浏览 1232人参与
# 拼多多工作体验 #
54990次浏览 379人参与
# 面试体验最好和最差的公司 #
19992次浏览 149人参与
# bilibili求职进展汇总 #
189629次浏览 1089人参与
# AI替代不了什么? #
11228次浏览 183人参与
# 我是XXX,请攻击我最薄弱的地方 #
72110次浏览 478人参与
# 听劝,这个公司值得去吗 #
714090次浏览 2023人参与
# 现在入门AI首先要做什么? #
4098次浏览 99人参与
# 中国电信笔试 #
39048次浏览 345人参与
# 实习心态崩了 #
113952次浏览 624人参与

查看23道真题和解析