
😎풀이
- nice 문자열 구하기 함수 정의
1-1. s
탐색
1-2. 모든 문자를 Set 자료구조에 저장
1-3. 현재 문자의 대/소 변환 문자가 Set에 있는지 검증
1-4. nice 문자열문자열 여부 반환
s
순회
2-1. i
~ j
범위의 문자열 slice
2-2. slice된 문자열을 탐색된 nice 문자열의 길이와 비교
2-3. nice 문자열이 아니라면, 생략
2-4. 가장 긴 nice 문자열 갱신
- 가장 긴 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
}