class Solution {
public boolean isValid(String s) {
//括号都是一对一对的,如果字符串的长度不是2的倍数,那么肯定不匹配了,直接返回false了
if(s.length() % 2 != 0){
return false;
}
//创建一个栈存放字符对象
Stack<Character> stack = new Stack<Character>();
//将字符串转换为字符数组
char charArray[] = s.toCharArray();
//对字符数组进行遍历
for(int i = 0;i < charArray.length;i++){
//获取当前的字符
char c = charArray[i];
//如果字符是(,将其压入栈中
if(c == '('){
stack.push('(');
//如果字符是[,将其压入栈中
}else if(c == '[' ){
stack.push('[');
//如果字符是{,将其压入栈中
}else if(c == '{'){
stack.push('{');
}else{
//如果栈中为空,直接返回false
if(stack.isEmpty()) return false;
//获取栈顶元素
char top = stack.peek();
//将栈顶元素和当前遍历到的元素进行比较
if(top == '(' && c == ')' || top == '[' && c == ']' || top == '{' && c == '}'){
//如果符合if条件就把符合条件的字符弹出来
stack.pop();
}else{
return false;
}
}
}
//如果都是符合条件的,最后都弹出来了,栈就是空的了
return stack.isEmpty();
}
}
05-17
271
07-17
277
“相关推荐”对你有帮助么?
-
非常没帮助
-
没帮助
-
一般
-
有帮助
-
非常有帮助
提交