Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

Python에서 서로 다른 대괄호가 균형을 이루고 올바른 형식인지 확인하는 프로그램

<시간/>

대괄호 문자열(둥근, 둥근 모양, 정사각형)이 있다고 가정하고 대괄호가 균형을 이루는지(정형화된) 여부를 확인해야 합니다.

따라서 입력이 s ="([()()]{[]})()"와 같으면 출력은 True

가 됩니다.

이 문제를 해결하기 위해 다음 단계를 따릅니다. −

  • 스택 :=새 목록
  • d :=키-값 쌍이 있는 해시 맵('}', '{'),(')','('), (']', '[')
  • s의 각 문자 c에 대해 다음을 수행합니다.
    • c가 '}])' 중 하나이면
      • 스택이 비어 있거나 스택의 맨 위가 d[c]와 같지 않으면
        • 거짓을 반환
      • 스택에서 팝
    • 그렇지 않으면
      • c를 스택에 푸시
  • 스택이 비어 있으면 true를 반환하고, 그렇지 않으면 false를 반환

이해를 돕기 위해 다음 구현을 살펴보겠습니다. −

예시

class Solution:
   def solve(self, s):
      stack = []
      d = {'}': '{',')': '(',']': '['}
      for c in s:
         if c in '}])':
            if not stack or stack[-1] != d[c]:
               return False
            stack.pop()
         else:
            stack.append(c)
      return not stack
ob = Solution()
print(ob.solve("([()()]{[]})()"))

입력

"([()()]{[]})()"

출력

True