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

Python에서 가장 긴 균형 부분 시퀀스의 길이를 찾는 프로그램

<시간/>

대괄호 "(" 및 ")"를 포함하는 문자열 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