js代码
let isValid =(str)=>{
// 传入的长度不等于偶数
if(str.length % 2 !== 0){
return false;
}
// 遇到左括号则入栈,遇到右括号则判断当前栈顶元素是否是对应左括号,不是则返回false。最后判断栈是否为空。
let stack = [];
for(let i = 0; i < str.length;i++){
let current = str[i];
if(current === '(' || current === '[' || current === '{'){
stack.push(current);
}else{
let top = stack[stack.length - 1];
if(
(top === '(' && current === ')') ||
(top === '{' && current === '}') ||
(top === '[' && current === ']')
){
stack.pop();
}else{
return false;
}
}
}
return stack.length === 0;
}
java
class Solution {
public boolean isValid(String s) {
int length = s.length();
if(length % 2 == 1){
return false;
}
ArrayList<Character> stack = new ArrayList();
for(int i = 0;i < length;i++){
char cur = s.charAt(i);
if(cur == '(' || cur == '{' || cur == '['){
stack.add(cur);
}else{
int size = stack.size();
if(size == 0){
return false;
}
char top = stack.get(size-1);
if( (top == '(' && cur == ')') ||
(top == '{' && cur == '}') ||
(top == '[' && cur == ']') ){
stack.remove(size-1);
}else{
return false;
}
}
}
return stack.size() == 0;
}
}