균형 잡힌 괄호 "(" 및 ")"가 포함된 문자열 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)) 입력
"(()())()(())"
출력
['(()())', '()', '(())']