균형 잡힌 괄호 "(" 및 ")"가 포함된 문자열 s가 있다고 가정하고 균형 그룹의 최대 수로 분할해야 합니다.
따라서 입력이 "(()())()(())"와 같으면 출력은 ['(()())', '()', '(())']
이 문제를 해결하기 위해 다음 단계를 따릅니다. −
- temp :=빈 문자열
- 그룹:=새 목록
- 카운트:=0
- s의 각 문자 b에 대해 다음을 수행합니다.
- count가 0이고 temp의 크기가 0보다 크면
- 그룹 끝에 temp 삽입
- temp :=빈 문자열
- temp :=임시 연결 b
- b가 '('와 같으면
- 카운트 :=카운트 + 1
- 그렇지 않으면
- count :=count - 1
- count가 0이고 temp의 크기가 0보다 크면
- 그룹 끝에 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))
입력
"(()())()(())"
출력
['(()())', '()', '(())']