😎풀이

  1. nice 문자열 구하기 함수 정의
    1-1. s 탐색
    1-2. 모든 문자를 Set 자료구조에 저장
    1-3. 현재 문자의 대/소 변환 문자가 Set에 있는지 검증
    1-4. nice 문자열문자열 여부 반환
  2. s 순회
    2-1. i ~ j 범위의 문자열 slice
    2-2. slice된 문자열을 탐색된 nice 문자열의 길이와 비교
    2-3. nice 문자열이 아니라면, 생략
    2-4. 가장 긴 nice 문자열 갱신
  3. 가장 긴 nice 문자열 반환
function longestNiceSubstring(s: string): string {
    let longest = ''
    for(let i = 0; i < s.length - 1; i++) {
        for(let j = i + 1; j <= s.length; j++) {
            const curSubStr = s.slice(i, j)
            if(longest.length >= curSubStr.length) continue
            if(!isNiceSubstr(curSubStr)) continue
            longest = curSubStr
        }
    }
    return longest
};

function isNiceSubstr(s: string) {
    const set = new Set<number>()
    for(const char of s) {
        const charCode = char.charCodeAt(0)
        set.add(charCode)
    }
    for(const code of set) {
        const isUpper = code < 97
        const transCode = code + (isUpper ? 32 : -32)
        if(!set.has(transCode)) return false
    }
    return true
}
profile
내 지식을 공유할 수 있는 대담함

0개의 댓글