대괄호 "(" 및 ")"를 포함하는 문자열 s가 있다고 가정하고 균형 대괄호의 가장 긴 부분 시퀀스의 길이를 찾아야 합니다.
따라서 입력이 s ="())(()("와 같으면 출력은 "()()"과 같은 하위 시퀀스를 취할 수 있으므로 4가 됩니다.
이 문제를 해결하기 위해 다음 단계를 따릅니다. −
-
해상도 :=0
-
n :=s
의 크기 -
닫기 :=0
-
범위 n - 1에서 0의 i에 대해 1씩 감소, 수행
-
s[i]가 ")"와 같으면
-
닫기 :=닫기 + 1
-
-
그렇지 않으면
-
닫기> 0이면
-
닫기 :=닫기 - 1
-
res :=res + 2
-
-
-
-
반환 해상도
이해를 돕기 위해 다음 구현을 살펴보겠습니다. −
예
class 솔루션:def solve(self, s):res =0 n =len(s) close =0 for i in range(n - 1, -1, -1):if s[i] ==" )":닫기 +=1 else:닫기> 0:닫기 -=1 res +=2 return resob =Solution()s ="())(()("print(ob.solve(s))사전>입력
"())(()("출력
4