[ Web Proxy ]
URL:
Viewing: https://raw.githubusercontent.com/izanbf1803/algorithms-python/master/stack/valid_parenthesis.py [Back]  [Original]

"""
Given a string containing just the characters
'(', ')', '{', '}', '[' and ']',
determine if the input string is valid.

The brackets must close in the correct order,
"()" and "()[]{}" are all valid but "(]" and "([)]" are not.
"""


def is_valid(s:"str")->"bool":
    stack = []
    dic = { ")":"(",
            "}":"{",
            "]":"["}
    for char in s:
        if char in dic.values():
            stack.append(char)
        elif char in dic.keys():
            if stack == []:
                return False
            s = stack.pop()
            if dic[char] != s:
                return False
    return stack == []


if __name__ == "__main__":
    paren = "[]"
    print(paren, is_valid(paren))
    paren = "[]()[]"
    print(paren, is_valid(paren))
    paren = "[[[]]"
    print(paren, is_valid(paren))
    paren = "{([])}"
    print(paren, is_valid(paren))
    paren = "(}"
    print(paren, is_valid(paren))

Web Proxy Viewer  |  New URL  |  Original Page