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

Python에서 두 문자열의 연결이 균형을 이루는지 확인하십시오.

<시간/>

이러한 문자 '(' 및 ')'만 있는 두 개의 대괄호 시퀀스 s 및 t가 있다고 가정합니다. s와 t의 연결된 문자열이 균형이 맞는지 확인해야 합니다. 연결은 s | t 또는 t | s.

따라서 입력이 s ="()()))", t ="()(()(")와 같으면 출력은 True가 됩니다. 왜냐하면 t | s를 연결하면 "() (()(()()))", 균형이 잡혀 있습니다.

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

  • is_balanced_parenthesis() 함수를 정의합니다. 문자열이 필요합니다.
  • 스택 :=새 목록
  • 0~문자열 크기 범위의 i에 대해
    • 문자열[i]가 '('와 같으면
      • 문자열[i]를 스택에 푸시
    • 그렇지 않으면
      • 스택이 비어 있으면
        • 거짓을 반환
      • 그렇지 않으면
        • 스택에서 팝
  • 스택이 비어 있지 않으면
    • 거짓을 반환
  • 참 반환
  • 메인 방법에서 다음을 수행하십시오 -
  • is_balanced_parenthesis(s + t)가 참이면
    • 참 반환
  • is_balanced_parenthesis(t + s)를 반환

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

예시

def is_balanced_parenthesis(string):
   stack = []
   for i in range(len(string)):
      if string[i] == '(':
         stack.append(string[i])
      else:
         if len(stack) == 0:
            return False
         else:
            stack.pop()
   if len(stack) > 0:
      return False
   return True
def solve(s, t):
   if is_balanced_parenthesis(s + t):
      return True
   return is_balanced_parenthesis(t + s)
s = "()()))"
t = "()(()("
print(solve(s, t))

입력

"()()))", "()(()("

출력

True