[LeetCode] 3216. Lexicographically Smallest String After a Swap

Chobby·2026년 1월 2일

LeetCode

목록 보기
874/907

😎풀이

  1. s를 숫자형으로 변환
  2. s 순회
    2-1. 인접한 두 숫자가 모두 홀수 혹은 짝수인지 판별
    2-2. 인접한 두 숫자의 자릿수 교환으로, 더 작은 수를 만들 수 있는지 판별
    2-3. 두 숫자 교환 및 반환
  3. 기존 문자열 반환
function getSmallestString(s: string): string {
    const splitted = [...s].map(Number)
    for(let i = 1; i < s.length; i++) {
        const prev = splitted[i - 1]
        const cur = splitted[i]
        const prevIsOdd = (prev & 1) === 1
        const curIsOdd = (cur & 1) === 1
        if(prevIsOdd !== curIsOdd) continue
        if(prev > cur) {
            [splitted[i], splitted[i - 1]] = [splitted[i - 1], splitted[i]]
            return splitted.join('')
        }
    }
    return s
};
profile
내 지식을 공유할 수 있는 대담함

0개의 댓글