"{[]}"true
"([)]"
false
"([]"
false
import java.util.Scanner;
import java.util.Stack;
public class 有效的括号 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
while (scanner.hasNextLine()) {
String str = scanner.nextLine();
boolean valid = isValid(str);
System.out.println(valid);
}
scanner.close();
}
private static boolean isValid(String str) {
if(str == null) {
return false;
}
Stack<Character> stack = new Stack<>();
for(char ch: str.toCharArray()) {
if(!valid(ch)) {
return false;
}
if(isLeft(ch) || stack.isEmpty()) {
stack.push(ch);
} else {
Character left = stack.pop();
if(!isValid(left, ch)) {
stack.push(left);
stack.push(ch);
}
}
}
return stack.isEmpty();
}
private static boolean isValid(char left, char right) {
return (left == '(' && right == ')')
|| (left == '[' && right == ']')
|| (left == '{' && right == '}');
}
private static boolean isLeft(char ch) {
return ch == '(' || ch == '[' || ch == '{';
}
private static boolean valid(char ch) {
return ch == '(' || ch == ')'
|| ch == '[' || ch == ']'
|| ch == '{' || ch == '}';
}
}