/*
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
*/