给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。
有效字符串需满足:
- 左括号必须用相同类型的右括号闭合。
- 左括号必须以正确的顺序闭合。
- 每个右括号都有一个对应的相同类型的左括号。
function isValid(s: string): boolean {
const slack = []
const char_arr = Array.from(s)
for(const s of char_arr){
if(slack.length === 0) {
slack.push(s)
continue
}else{
const top = slack.pop()
if(top){
if(top === '(' && s ===')') continue
else if(top === '{' && s ==='}') continue
else if(top === '[' && s ===']') continue
else {
slack.push(top,s)
}
}
}
}
return slack.length === 0
};AI
function isValid(s: string): boolean {
const stack: string[] = [];
const map: Record<string, string> = {
')': '(',
'}': '{',
']': '['
};
for (const char of s) {
// 如果是右括号
if (map[char]) {
// 弹出栈顶元素进行匹配
const top = stack.pop();
if (top !== map[char]) return false;
} else {
// 如果是左括号,直接入栈
stack.push(char);
}
}
// 栈为空则代表全部匹配
return stack.length === 0;
}