实际应用

平衡符号

应用:编译器语法检查

1
2
"[{()}]" => true
"[{(}]" => false
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
function check(str) {
console.log(str)
const obj = {
"[": "]",
"<": ">",
"{": "}",
};
const zhan = [];
for (let i = 0; i < str.length; i++) {
const s = str[i]
if (["<", "[", "{"].includes(s)) {
zhan.push(s);
}
if ([">", "]", "}"].includes(s)) {
if (zhan.length === 0) {
return false
}
const pop = zhan.pop();
if (s !== obj[pop]) {
return false
}
}
}
return zhan.length === 0 || true
}

test

1
2
3
4
5
6
7
8
check('}')      // ==> false
check('{') // ==> false
check('{}') // ==> true
check('{<}') // ==> false
check('{<>}') // ==> true
check('{<[>}') // ==> false
check('{<[]>}') // ==> true
check('{<[>]}') // ==> false

最后更新: 2022年05月25日 17:05