Skip to content

Commit e330476

Browse files
committed
Added first working solution for valid parantheses
1 parent 8f67717 commit e330476

File tree

2 files changed

+29
-13
lines changed

2 files changed

+29
-13
lines changed

Diff for: js/Problems/validParentheses.js

+28-12
Original file line numberDiff line numberDiff line change
@@ -3,19 +3,35 @@
33
* @return {boolean}
44
*/
55
var validParentheses = function (s) {
6-
var amountParentheses = 0;
7-
var amountBrackets = 0;
8-
var amountBraces = 0;
9-
for (let index = 0; index < s.length; index++) {
10-
const element = s.charAt(index);
11-
if (element == "(") amountParentheses++;
12-
if (element == ")") amountParentheses--;
13-
if (element == "[") amountBrackets++;
14-
if (element == "]") amountBrackets--;
15-
if (element == "{") amountBraces++;
16-
if (element == "}") amountBraces--;
6+
if (s.length % 2 != 0) return false;
7+
var opening = [];
8+
for (let i = 0; i < s.length; i++) {
9+
const element = s[i];
10+
if (element == "(" || element == "[" || element == "{") {
11+
opening.push(element);
12+
} else {
13+
if (element == ")") {
14+
if (opening[opening.length - 1] == "(") {
15+
opening.pop();
16+
} else {
17+
return false;
18+
}
19+
} else if (element == "]") {
20+
if (opening[opening.length - 1] == "[") {
21+
opening.pop();
22+
} else {
23+
return false;
24+
}
25+
} else if (element == "}") {
26+
if (opening[opening.length - 1] == "{") {
27+
opening.pop();
28+
} else {
29+
return false;
30+
}
31+
}
32+
}
1733
}
18-
return amountParentheses == 0 && amountBrackets == 0 && amountBraces == 0;
34+
return opening.length == 0;
1935
};
2036

2137
module.exports = validParentheses;

Diff for: js/Tests/validParentheses.test.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -14,4 +14,4 @@ test("Valid Parentheses: Should return (]", () => {
1414

1515
test("Valid Parentheses: Should return ([)]", () => {
1616
expect(validParentheses("([)]")).toEqual(false);
17-
});
17+
});

0 commit comments

Comments
 (0)