"{[]}"
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 == '}'; } }