https://leetcode.com/problems/decrypt-string-from-alphabet-to-integer-mapping/ Easy

Условие

Дана строка s, представляющая закодированную строку, где:

• Символы от '1' до '9' представляют буквы от 'a' до 'i'.

• Последовательности от '10#' до '26#' представляют буквы от 'j' до 'z'. Нужно расшифровать строку и вернуть результат.

Примеры

Input: s = "10#11#12” Output: "jkab” Explanation: "10#" → j, "11#" → k, "12" → a + b

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

Решение

fun freqAlphabets(s: String): String {
    val result = StringBuilder()
    var i = s.length - 1
    while (i >= 0) {
        if (s[i] == '#') {
            val num = (s[i - 2] - '0') * 10 + (s[i - 1] - '0') // Двузначное число
            result.append('a' + num - 1)
            i -= 3
        } else {
            val num = s[i] - '0'
            result.append('a' + num - 1)
            i -= 1
        }
    }
    return result.reverse().toString()
}

Временная сложность

O(n), где n — длина строки s.

Пространственная сложность

O(n), для хранения результата.