[LeetCode] Replace All Digits with Characters

아르당·2026년 7월 8일

LeetCode

목록 보기
395/561
post-thumbnail

문제를 이해하고 있다면 바로 풀이를 보면 됨
전체 코드로 바로 넘어가도 됨
마음대로 번역해서 오역이 있을 수 있음

Problem

0부터 시작하는 인덱스를 가진 문자열 s가 주어지는데, 짝수 인덱스에는 영어 소문자, 홀수 인덱스에는 숫자를 가진다.
문자 c와 숫자 x를 입력받아 c의 다음 x번째 문자를 반환하는 연산 shift(c, x)를 수행해야한다.

  • 예를 들어, shift('a', 5) = 'f'이고 shift('x', 0) = 'x'이다.

홀수 인덱스 i에 대해, s[i]를 shift(s[i - 1], s[i])연산의 결과로 바꾼다.
모든 인덱스를 바꾼 후 s를 반환해라. shift(s[i - 1], s[i]) 연산 결과는 'z'를 초과하지 않는다.

Example

#1
Input: s = "a1c1e1"
Output: "abcdef"
Explanation: 숫자는 다음과 같이 대체된다.

  • s[1] -> shift('a', 1) = 'b'
  • s[3] -> shift('c', 1) = 'd'
  • s[5] -> shift('e', 1) = 'f'

#2
Input: s = "a1b2c3d4e"
Output: "abbdcfdhe"
Explanation: 숫자는 다음과 같이 대체된다.

  • s[1] -> shift('a',1) = 'b'
  • s[3] -> shift('b',2) = 'd'
  • s[5] -> shift('c',3) = 'f'
  • s[7] -> shift('d',4) = 'h'

Constraints

  • 1 <= s.length <= 100
  • s는 오직 영어 소문자와 숫자로 구성된다.
  • 모든 홀수 인덱스 i는 shift(s[i - 1], s[i]) <= 'z'이다.

Solved

class Solution {
    public String replaceDigits(String s) {
        char[] arr = s.toCharArray();

        for(int i = 1; i < arr.length; i += 2){
            arr[i] = (char)(arr[i - 1] + (arr[i] - '0'));
        }

        return new String(arr);
    }
}
profile
내 마음대로 코드 작성하는 세상

0개의 댓글