# 1.JS判断字符串小括号是否成对合法
# 1.1思路:
要判断()是否成对,运用栈的"后进先出"的特点
定义一个空数组,作为栈;
for循环遍历字符串,当遇到"("的时候就把"("通过push方法添加到空数组,记录发现一个左括号;
当遇到")"就把通过pop方法把最顶端的元素删除,记录发现一个右括号,抵消一个左括号。
注意:这个时候,如果数组是空的,但是遇到了")",说明没有"("来成双成对,则返回false;
不是括号的字符就不用考虑,继续for循环,并且continue;
遍历完成以后,判断栈是否为空。为空则证明左右括号数量刚好抵消,返回true,否则返回false
# 1.2代码实现:
function isLegalBrackets(str) {
let arr = [];
for(let i = 0; i<str.length; i++) {
let item = str[i];
if(item === '(') {
arr.push('(')
} else if (item === ')') {
if(arr.length === 0) {
return false;
} else {
arr.pop();
}
} else {
continue;
}
}
return arr.length === 0
}
console.log("()====", isLegalBrackets("()"));
console.log("()))====", isLegalBrackets("()))"));
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
执行结果:
()==== true
()))==== false
1
2
2