LeetCode in Kotlin

1309. Decrypt String from Alphabet to Integer Mapping

Easy

You are given a string s formed by digits and '#'. We want to map s to English lowercase characters as follows:

Return the string formed after mapping.

The test cases are generated so that a unique mapping will always exist.

Example 1:

Input: s = “10#11#12”

Output: “jkab”

Explanation: “j” -> “10#” , “k” -> “11#” , “a” -> “1” , “b” -> “2”.

Example 2:

Input: s = “1326#”

Output: “acz”

Constraints:

Solution

class Solution {
    fun freqAlphabets(s: String): String {
        val builder = StringBuilder()
        var i = s.length - 1
        while (i >= 0) {
            if (s[i] == '#') {
                decryptor(builder, i - 1, i - 2, s)
                i -= 3
            } else {
                val ch = (s[i].code - '0'.code + 96).toChar()
                builder.append(ch)
                i--
            }
        }
        return builder.reverse().toString()
    }

    private fun decryptor(builder: StringBuilder, a: Int, b: Int, s: String) {
        builder.append((((s[b].code - '0'.code) * 10 + s[a].code - '0'.code) + 96).toChar())
    }
}