给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。
有效字符串需满足:
左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。
示例 1:
输入:s = "()"
输出:true
示例 2:
输入:s = "()[]{}"
输出:true
示例 3:
输入:s = "(]"
输出:false
示例 4:
输入:s = "([)]"
输出:false
示例 5:
输入:s = "{[]}"
输出:true
import java.util.Scanner;
import java.util.Stack;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String s = sc.nextLine();
Boolean b =isValid(s);
System.out.println(b);
}
static boolean isValid(String s) {
Stack<Character> stack = new Stack<>();
if (s.length() < 1) {
return true;
}
if (s.length() % 2 == 1) {
return false;
}
for (int i = 0; i < s.length(); i++) {
char c = s.charAt(i);
if (c == ')') {
if (!stack.empty() && stack.peek() == '(') {
stack.pop();
} else {
return false;
}
}
else if (c == ']') {
if (!stack.empty() && stack.peek() == '[') {
stack.pop();
} else {
return false;
}
}
else if (c == '}') {
if (!stack.empty() && stack.peek() == '{') {
stack.pop();
} else {
return false;
}
} else {
stack.push(c);
}
}
return true;
}
}