Exemplo n.º 1
0
def balanced_parentheses(paren_str):
    """problem involving applications of stack"""

    # filter out all values besides brackets
    matches = re.finditer(r'[(){}[\]]+', paren_str)
    parsed_iter = itertools.chain.from_iterable(
                            result.group() 
                            for result in matches)
    
    opening = Stack()
    
    for i in parsed_iter:
        if i in ("(", "{", "["):
            opening.add(i)
        
        else:
            if not opening.isEmpty():
                if   i == ")" and opening.peek() == "(":
                    opening.get()
                elif i == "}" and opening.peek() == "{":
                    opening.get()
                elif i == "]" and opening.peek() == "[":
                    opening.get()
                else:
                    return False
                
            else:
                return False

    return True  
Exemplo n.º 2
0
def revstringstack(str):
    # with stack implemented
    stack = Stack()
    
    for char in str:
        stack.add(char)
        
    new_str = ''
    
    while not stack.isEmpty():
        new_str += stack.get()
        
    return new_str