매칭 알고리즘 파이썬 스택 구현 브래킷을 사용

적층 구조의 파이썬리스트의 구현을 사용하여, 다음 매칭 알고리즘 괄호 소위 브래킷 일치하는 프로그래밍 언어를 참조 달성하기 위해 스택을 사용하여, 괄호 쌍으로 나타나 왼쪽} 먼저, 마지막 닫는 괄호에 대응 등장 적층 체의 특성에 맞춰, 최신 닫는 괄호에 대응 나타나는 후에 왼쪽 괄호

스택 클래스를 작성 : stack.py를

class Stack:
    def __init__(self):
        self.items = []

    def is_Empty(self):
        return self.items == []

    def push(self, item):
        self.items.append(item)

    def pop(self):
        return self.items.pop()

    def peek(self):
        return self.items[len(items)-1]
    def size(self):
        return len(self.items)

알고리즘 프로그램을 일치하는 괄호를 달성 :

from stack import Stack
def parChecker(symbolString):
    s = Stack()
    balanced = True
    index = 0
    while index < len(symbolString) and balanced:
        symbol = symbolString[index]
        if symbol == "(":
            s.push(symbol)
        elif symbol == ")":
            if s.is_Empty():
                balanced = False
            else:
                s.pop()

        index += 1
    if balanced and s.is_Empty():
        return True
    else:
        return False

print(parChecker("(((2356)))"))

출력 :
진정한
재시험

print(parChecker("(()))"))

출력 거짓

전파

중괄호의 다양한 일치시킬 수, {}, []
코드 만 사소한 변경 :

from stack import Stack

def parChecker(symbolString):
    s = Stack()
    balanced = True
    index = 0
    while index < len(symbolString) and balanced:
        symbol = symbolString[index]
        if symbol in "({[":
            s.push(symbol)
        elif symbol in ")}]":
            if s.is_Empty():
                balanced = False
            else:
                s.pop()

        index += 1
    if balanced and s.is_Empty():
        return True
    else:
        return False

print(parChecker("[(({fdf}))]"))

추천

출처blog.51cto.com/13560219/2447832