Longest Valid Parentheses
문제 파악
주어진 문자열에서 가장 긴 유효한 괄호 문자열의 길이를 찾는 문제
Longest Valid Parentheses - LeetCode
접근 방법
스택을 이용하여 유효한 괄호 문자열의 길이를 계산
- 주어진 문자열을 순회하면서 열린괄호 ‘(’를 만나면 스택에 0을 추가
- 닫힌 괄호 ‘)’를 만나면 스택에서 값을 꺼내어 짝을 이루는 열린 괄호의 개수를 누적하여 저장
- 스택의 길이가 1 이상인 경우에만 짝이 있으므로 해당 경우에만 계산
- 계산된 값중 가장 긴값을 저장하여 반환
코드 구현
class Solution:
def longestValidParentheses(self, s: str) -> int:
stack = [0]
longest = 0
for c in s:
if c == "(":
stack.append(0)
else:
if len(stack) > 1:
val = stack.pop()
stack[-1] += val + 2
longest = max(longest, stack[-1])
else:
stack = [0]
return longest
Leave a comment