How to shift letters in a string x times by giving a slice of shifts in Kotlin

1 Answer

0 votes
/*
 string = "aaa"
 After shifting the first 1 letter by 1 = "baa"
 After shifting the first 2 letters by 2 = "dca"
 After shifting the first 3 letters by 3 = "gfd"
 result = "gfd"
*/

fun shiftLetters(str: String, shifts: IntArray): String {
    val size = shifts.size
    val arr = str.toCharArray()

    for (i in size - 1 downTo 0) {
        if (i + 1 < size) {
            shifts[i] += shifts[i + 1]
        }

        shifts[i] = shifts[i] % 26

        var asciiCode = str[i].code - 'a'.code
        asciiCode += shifts[i]

        if (asciiCode > 25) {
            asciiCode -= 26
        }

        arr[i] = ('a'.code + asciiCode).toChar()
    }

    return arr.concatToString()
}

fun main() {
    var str = "aaa"
    val shifts = intArrayOf(1, 2, 3)

    str = shiftLetters(str, shifts)

    println(str)
}




/*
run:

gfd

*/

 



answered Dec 4, 2025 by avibootz

Related questions

...