一、题目描述:
20. 有效的括号
给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。
有效字符串需满足:
- 左括号必须用相同类型的右括号闭合。
- 左括号必须以正确的顺序闭合。 示例 1:
输入:s = "()"
输出:true
示例 2:
输入:s = "()[]{}"
输出:true
示例 3:
输入:s = "(]"
输出:false
示例 4:
输入:s = "([)]"
输出:false
示例 5:
输入:s = "{[]}"
输出:true
二、思路分析:
- 声明一个数组arr来存储字符串中的元素
- 在遍历字符串的过程中判断 arr 的最后一个元素是否和 s.charAt(i) 可以组成一对括号。
- 如果可以组成一对括号就 arr.pop()。
- 否则 arr.push(s.charAt(i)).
- 最后判断数组是否为空,如果数组为空则s 是 有效的括号,否则不是
三、AC 代码:
/**
* @param {string} s
* @return {boolean}
*/
var isValid = function(s) {
let arr = s? [s.charAt(0)] : [];
for(let i = 1; i < s.length; i++) {
let str = s.charAt(i);
switch(str) {
case ']':
str = '[';
break;
case '}':
str = '{';
break;
case ')':
str = '(';
break;
}
if(arr[arr.length - 1] === str && s.charAt(i) !== str) {
arr.pop();
} else {
arr.push(s.charAt(i));
}
}
return arr.length === 0
};
四、总结:
本文正在参与「掘金 2021 春招闯关活动」, 点击查看 活动详情