[LeetCode] 32. Longest Valid Parentheses

Chobby·2024년 8월 27일
1

LeetCode

목록 보기
69/194

괄호의 상호작용이 일어날 때, 스텍에 현재 인덱스의 길이를 넣었다가

잘못된 등호를 만났을 때, 현재 인덱스 - 기록된 마지막 인덱스 = 현재 문자열 길이를 통해 최대 등호 길이를 구하는 로직이다.

😎풀이

function longestValidParentheses(s: string): number {
    let maxLen = 0;
    const stack = [-1];

    for (let i = 0; i < s.length; i++) {
        if (s[i] === '(') {
            stack.push(i);
        } else {
            stack.pop();

            if (stack.length === 0) {
                // 스택이 비어있다면, 현재 인덱스를 push (새로운 시작점)
                stack.push(i);
            } else {
                // 현재 유효한 괄호 문자열의 길이를 계산
                // (현재 인덱스 - 스택의 top)
                const len = i - stack[stack.length - 1];
                // 최대 길이 업데이트
                maxLen = Math.max(maxLen, len);
            }
        }
    }

    return maxLen;
}
profile
내 지식을 공유할 수 있는 대담함

0개의 댓글