[LeetCode] Decrypt String from Alphabet to Integer Mapping

아르당·2026년 4월 19일

LeetCode

목록 보기
270/303
post-thumbnail

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

Problem

숫자와 '#'으로 구성된 문자열 s가 주어진다. 아래와 같은 방법으로 s를 영어 소문자로 매핑하고 싶다.

  • 문자('a'부터 'i'까지)는 ('1'부터 '9'까지)표현된다.
  • 문자('j'부터 'z'까지)는 ('10#'부터 '26#'까지)표현된다.

매핑 이후 구성된 문자열을 반환해라.

Example

#1
Input: s = "10#11#12"
Output: "jkab"
Explanation: "j" -> "10#", "k" -> "11#", "a" -> "1", "b" -> "2"

#2
Input: s = "1326#"
Output: "acz"

Constraints

  • 1 <= s.length <= 1000
  • s는 숫자와 '#'으로 구성된다.
  • s는 매핑이 항상 가능한 유효한 문자열이다.

Solved

class Solution {
    public String freqAlphabets(String s) {
        StringBuilder sb = new StringBuilder();
        
        for(int i = s.length() - 1; i >= 0; i--){
            if(s.charAt(i) == '#'){
                int num = (s.charAt(i - 2) - '0') * 10 + (s.charAt(i - 1) - '0');
                sb.append((char) (num - 1 + 'a'));
                i -= 2;
            }else{
                int num = s.charAt(i) - '0';
                sb.append((char) (num - 1 + 'a'));
            }
        }

        return sb.reverse().toString();
    }
}
profile
내 마음대로 코드 작성하는 세상

0개의 댓글