Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 11 additions & 0 deletions .vscode/settings.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
{
"python.testing.unittestArgs": [
"-v",
"-s",
".",
"-p",
"test_*.py"
],
"python.testing.pytestEnabled": false,
"python.testing.unittestEnabled": true
}
Binary file added __pycache__/bracket_validator.cpython-311.pyc
Binary file not shown.
Binary file not shown.
24 changes: 24 additions & 0 deletions bracket_validator.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
def bracket_validator(input_string):
stack = []
opening_brackets = "([{"
closing_brackets = ")]}"


bracket_map = {
')': '(',
']': '[',
'}': '{'
}

for char in input_string:
if char in opening_brackets:
stack.append(char)
elif char in closing_brackets:
if not stack:
return False

last_open_bracket = stack.pop()
if last_open_bracket != bracket_map[char]:
return False

return not stack
32 changes: 32 additions & 0 deletions test_bracket_validator.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
import unittest
from bracket_validator import bracket_validator

class TestBracketValidator(unittest.TestCase):
def test_valid_basic(self):
self.assertTrue(bracket_validator("()"))
self.assertTrue(bracket_validator("[]"))
self.assertTrue(bracket_validator("{}"))

def test_valid_nested(self):
self.assertTrue(bracket_validator("([])"))
self.assertTrue(bracket_validator("{[()]}"))

def test_valid_with_other_chars(self):
self.assertTrue(bracket_validator("a(b[c]{d})e"))

def test_invalid_unclosed(self):
self.assertFalse(bracket_validator("(()"))
self.assertFalse(bracket_validator("{[("))

def test_invalid_mismatched_pair(self):
self.assertFalse(bracket_validator("([)]"))
self.assertFalse(bracket_validator("(}"))

def test_empty_string(self):
self.assertTrue(bracket_validator(""))

def test_only_non_brackets(self):
self.assertTrue(bracket_validator("abc 123 def"))

if __name__ == '__main__':
unittest.main()