-
-
Notifications
You must be signed in to change notification settings - Fork 44
/
Copy pathvalid-braces.js
36 lines (33 loc) · 1010 Bytes
/
valid-braces.js
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
26
27
28
29
30
31
32
33
34
35
36
function isOpeningBrace(brace) {
return brace === '(' || brace === '[' || brace === '{';
}
function validBraces(braces){
const braceStack = [];
for (let i = 0; i < braces.length; i++) {
const brace = braces[i];
if (isOpeningBrace(brace)) {
braceStack.push(brace);
} else {
const lastBrace = braceStack.pop();
if (!lastBrace) return false;
if (lastBrace === '(' && brace !== ')') {
return false;
}
if (lastBrace === '[' && brace !== ']') {
return false;
}
if (lastBrace === '{' && brace !== '}') {
return false;
}
}
}
return braceStack.length === 0;
}
console.log(validBraces( '()' ), true);
console.log(validBraces( '[(])' ), false);
console.log(validBraces('(){}[]' ), true);
console.log(validBraces('([{}])' ), true);
console.log(validBraces('(}' ), false);
console.log(validBraces('[(])' ), false);
console.log(validBraces('[({})](]'), false);
console.log(validBraces('}}]]))}])'), false);