Skip to content

Commit e994de4

Browse files
committed
valid-parentheses solution
1 parent 1618f0c commit e994de4

File tree

1 file changed

+39
-0
lines changed

1 file changed

+39
-0
lines changed

valid-parentheses/lhc0506.js

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
/**
2+
* @param {string} s
3+
* @return {boolean}
4+
*/
5+
6+
const BRACKETS = {
7+
SMALL_LEFT : '(',
8+
SMALL_RIGHT : ')',
9+
MIDIDUM_LEFT : '{',
10+
MIDIDUM_RIGHT : '}',
11+
LARGE_LEFT : '[',
12+
LARGE_RIGHT : ']',
13+
};
14+
15+
const LEFT_BRAKCETS_SET = new Set([BRACKETS.SMALL_LEFT, BRACKETS.MIDIDUM_LEFT, BRACKETS.LARGE_LEFT]);
16+
17+
const BRACKET_MAPPER = {
18+
[BRACKETS.SMALL_RIGHT]: BRACKETS.SMALL_LEFT,
19+
[BRACKETS.MIDIDUM_RIGHT]: BRACKETS.MIDIDUM_LEFT,
20+
[BRACKETS.LARGE_RIGHT]: BRACKETS.LARGE_LEFT,
21+
};
22+
23+
var isValid = function(s) {
24+
const stack = [];
25+
26+
for (const bracket of s) {
27+
if (LEFT_BRAKCETS_SET.has(bracket)) {
28+
stack.push(bracket);
29+
} else {
30+
const poppedBracekt = stack.pop();
31+
32+
if (poppedBracekt !== BRACKET_MAPPER[bracket]) {
33+
return false;
34+
}
35+
}
36+
}
37+
38+
return stack.length === 0;
39+
};

0 commit comments

Comments
 (0)