File tree Expand file tree Collapse file tree 1 file changed +35
-0
lines changed
Filter options
Expand file tree Collapse file tree 1 file changed +35
-0
lines changed
Original file line number Diff line number Diff line change
1
+ class Solution (object ):
2
+ def isValid (self , s ):
3
+ """
4
+ :type s: str
5
+ :rtype: bool
6
+ """
7
+
8
+ # The stack to keep track of opening brackets.
9
+ stack = []
10
+
11
+ # Hash map for keeping track of mappings. This keeps the code very clean.
12
+ # Also makes adding more types of parenthesis easier
13
+ mapping = {")" : "(" , "}" : "{" , "]" : "[" }
14
+
15
+ # For every bracket in the expression.
16
+ for char in s :
17
+
18
+ # If the character is an closing bracket
19
+ if char in mapping :
20
+
21
+ # Pop the topmost element from the stack, if it is non empty
22
+ # Otherwise assign a dummy value of '#' to the top_element variable
23
+ top_element = stack .pop () if stack else '#'
24
+
25
+ # The mapping for the opening bracket in our hash and the top
26
+ # element of the stack don't match, return False
27
+ if mapping [char ] != top_element :
28
+ return False
29
+ else :
30
+ # We have an opening bracket, simply push it onto the stack.
31
+ stack .append (char )
32
+
33
+ # In the end, if the stack is empty, then we have a valid expression.
34
+ # The stack won't be empty for cases like ((()
35
+ return not stack
You can’t perform that action at this time.
0 commit comments