在一行中输入一个仅由小写字母组成字符串
(
)。
如果字符串
是好串,输出
;否则输出
。
ab
Good
初始空串,插入一次 "ab" 即可得到 "ab"。
aab
Bad
无法通过插入 "ab" 操作得到 "aab"。
abaababababbaabbaaaabaababaabbabaaabbbbbbbb
Bad
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
Deque<Character> stack = new ArrayDeque<>();
String s = in.next();
stack.push('1');//防止'b'先手,导致误判
for (int i = 0; i < s.length(); i++) {
if (s.charAt(i) == 'a' ) {
stack.push(s.charAt(i));
continue;
}
if (s.charAt(i) == 'b' && !stack.isEmpty()) {
char c = stack.pop();
if (c != 'a') {
System.out.println("Bad");
return;
}
continue;
}
}
stack.pop();//清除加入'1'带来的影响
if (!stack.isEmpty())
System.out.println("Bad");
else System.out.println("Good");
}
}
import java.util.Scanner;
import java.util.Stack;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String str = in.next();
boolean result = goodString(str);
if (result) System.out.print("Good");
else System.out.print("Bad");
}
public static boolean goodString(String str) {
Stack<Character> stack = new Stack<>();
for (int i = 0; i < str.length(); i++) {
char c = str.charAt(i);
if (c == 'a') stack.push(c);
else if (c == 'b') {
// 当 Stack 为空时调用 pop() 方法,不会返回任何值,而是会直接抛出空栈异常
if (stack.isEmpty()) return false;
if (stack.pop() == 'b') return false;
}
}
return stack.isEmpty();
}
}