[LeetCode] 2609. Find the Longest Balanced Substring of a Binary String

Chobby·2025년 11월 21일

LeetCode

목록 보기
771/800

😎풀이

  1. 모든 01 앞에 있고, 두 문자의 빈도가 같은지 확인하느 헬퍼 함수 정의
  2. 투 포인터로 순회
    2-1. 현재 범위가 균형잡힌 문자열인지 검증
    2-2. 균형잡힌 문자열 이라면, 최대 길이 갱신
  3. 균형잡힌 문자열 중 가장 긴 문자열 길이 반환
function findTheLongestBalancedSubstring(s: string): number {
    let longest = 0
    for(let l = 0; l < s.length - 1; l++) {
        for(let r = l + 1; r < s.length; r++) {
            const curSubstr = s.slice(l, r + 1)
            if(!isBalanced(curSubstr)) continue
            longest = Math.max(longest, curSubstr.length)
        }
    }
    return longest
};

function isBalanced(str: string) {
    const firstOneIdx = str.indexOf('1')
    const lastZeroIdx = str.lastIndexOf('0')
    if(lastZeroIdx > firstOneIdx) return false
    let zeroCount = 0
    for(const char of str) {
        if(char === '0') zeroCount++
        else zeroCount--
    }
    return zeroCount === 0
}
profile
내 지식을 공유할 수 있는 대담함

0개의 댓글