괄호의 최대 중첩 깊이

1925 단어 theabbieleetcodedsa
문자열은 다음 중 하나를 충족하는 경우 유효한 괄호 문자열(VPS로 표시됨)입니다.
  • 빈 문자열""이거나 "(" 또는 ")" ,
  • 와 같지 않은 단일 문자입니다.
  • AB (AB 연결)로 쓸 수 있습니다. 여기서 AB는 VPS이거나
  • (A) 로 쓸 수 있습니다. 여기서 A는 VPS입니다.

  • VPSdepth(S)의 중첩 깊이S를 다음과 같이 유사하게 정의할 수 있습니다.
  • depth("") = 0
  • depth(C) = 0 , 여기서 C"(" 또는 ")" 와 같지 않은 단일 문자가 있는 문자열입니다.
  • depth(A + B) = max(depth(A), depth(B)) , 여기서 AB는 VPS입니다.
  • depth("(" + A + ")") = 1 + depth(A) , 여기서 A는 VPS입니다.

  • 예를 들어 "" , "()()""()(()())" 는 VPS(중첩 깊이 0, 1 및 2)이고 ")(""(()"는 VPS가 아닙니다.

    문자열 s로 표시된 VPS가 주어지면 s의 중첩 깊이를 반환합니다.

    예 1:

    입력: s = "(1+(2*3)+((8)/4))+1"
    출력: 3
    설명: 숫자 8은 문자열에서 3개의 중첩된 괄호 안에 있습니다.

    예 2:

    입력: s = "(1)+((2))+(((3)))"
    출력: 3

    제약:
  • 1 <= s.length <= 100
  • s는 숫자0-9와 문자'+' , '-' , '*' , '/' , '('')' 로 구성됩니다.
  • 괄호 식s이 VPS임을 보장합니다.

  • 해결책:

    class Solution:
        def maxDepth(self, s: str) -> int:
            depth = 0
            mdepth = 0
            for c in s:
                if c == "(":
                    depth += 1
                if c == ")":
                    depth -= 1
                mdepth = max(mdepth, depth)
            return mdepth
    

    좋은 웹페이지 즐겨찾기