给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串 s ,判断字符串是否有效。
有效字符串需满足:
- 左括号必须用相同类型的右括号闭合。
- 左括号必须以正确的顺序闭合。
例如:
输入:s = "()"
输出:true
代码实现:
class Solution {
public boolean isValid(String s) {
Stack<Character> stack = new Stack<>();
for (int i = 0; i < s.length(); i++) {
char ch = s.charAt(i);
if (ch == '(' || ch == '[' || ch == '{'){
stack.push(ch);
}else {
//1、判断栈是否为空
if (stack.empty()){
System.out.println("右括号多!");
return false;
}
//先拿到栈顶元素的括号
char ch1 = stack.peek();
if (ch1 == '(' && ch == ')' || ch1 == '[' && ch == ']' || ch1 == '{' && ch == '}'){
stack.pop();
}else {
System.out.println("左右括号不匹配!");
return false;
}
}
}
if (!stack.empty()){
System.out.println("左括号多!");
return false;
}
return true;
}
}