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

Python에서 균형 잡힌 괄호 그룹의 최대 수를 찾는 프로그램

<시간/>

균형 잡힌 괄호 "(" 및 ")"가 포함된 문자열 s가 있다고 가정하고 균형 그룹의 최대 수로 분할해야 합니다.

따라서 입력이 "(()())()(())"와 같으면 출력은 ['(()())', '()', '(())']

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

  • temp :=빈 문자열
  • 그룹:=새 목록
  • 카운트:=0
  • s의 각 문자 b에 대해 다음을 수행합니다.
    • count가 0이고 temp의 크기가 0보다 크면
      • 그룹 끝에 temp 삽입
      • temp :=빈 문자열
    • temp :=임시 연결 b
    • b가 '('와 같으면
      • 카운트 :=카운트 + 1
    • 그렇지 않으면
      • count :=count - 1
  • 그룹 끝에 temp 삽입
  • 반환 그룹

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

예시

class Solution:
   def solve(self, s):
      temp = ''
      groups = []
      count = 0
      for b in s:
         if count == 0 and len(temp) > 0:
            groups.append(temp)
         temp = ''
         temp += b
         if b == '(':
            count += 1
         else:
            count -= 1
      groups.append(temp)
      return groups
s = "(()())()(())"
ob = Solution()
print(ob.solve(s))

입력

"(()())()(())"

출력

['(()())', '()', '(())']