[LeetCode] 1869. Longer Contiguous Segments of Ones than Zeros

Chobby·3일 전
1

LeetCode

목록 보기
620/650

😎풀이

  1. s를 순회
    1-1. 현재 요소가 이전 요소와 다르다면, 이어진 길이로 최대 길이를 갱신하고 초기화
    1-2. 현재 요소가 이전 요소와 같다면, 길이 증가
  2. 이어진 상태로 문자열이 종료되었을 가정하에 최대 길이 갱신
  3. 1의 substring이 0의 substring 최대 길이보다 길게 나열되었는지 판단
function checkZeroOnes(s: string): boolean {
    let curOneLen = s[0] === '1' ? 1 : 0
    let curZeroLen = s[0] === '0' ? 1 : 0
    let maxOneLen = curOneLen
    let maxZeroLen = curZeroLen
    for(let i = 1; i < s.length; i++) {
        const prev = s[i - 1]
        const cur = s[i]
        if(prev !== cur) {
            maxOneLen = Math.max(maxOneLen, curOneLen)
            maxZeroLen = Math.max(maxZeroLen, curZeroLen)
            curOneLen = 0
            curZeroLen = 0
            if(cur === '1') curOneLen = 1
            else curZeroLen = 1
            continue
        }
        if(cur === '1') curOneLen++
        else curZeroLen++
    }
    maxOneLen = Math.max(maxOneLen, curOneLen)
    maxZeroLen = Math.max(maxZeroLen, curZeroLen)
    return maxOneLen > maxZeroLen
};
profile
내 지식을 공유할 수 있는 대담함

0개의 댓글