괄호의 상호작용이 일어날 때, 스텍에 현재 인덱스의 길이를 넣었다가
잘못된 등호를 만났을 때, 현재 인덱스 - 기록된 마지막 인덱스 = 현재 문자열 길이
를 통해 최대 등호 길이를 구하는 로직이다.
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;
}