
😎풀이
- 모든
0이 1 앞에 있고, 두 문자의 빈도가 같은지 확인하느 헬퍼 함수 정의
- 투 포인터로 순회
2-1. 현재 범위가 균형잡힌 문자열인지 검증
2-2. 균형잡힌 문자열 이라면, 최대 길이 갱신
- 균형잡힌 문자열 중 가장 긴 문자열 길이 반환
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
}