fun reverseOnlyAlphabeticCharacters(s: String): String {
val chars = s.toCharArray()
var i = 0
var j = chars.size - 1
while (i < j) {
when {
!chars[i].isLetter() -> i++
!chars[j].isLetter() -> j--
else -> {
val tmp = chars[i]
chars[i] = chars[j]
chars[j] = tmp
i++
j--
}
}
}
return String(chars)
}
fun main() {
val s = "a1-bC2-dEf3-ghIj"
println(s)
println(reverseOnlyAlphabeticCharacters(s))
}
/*
run:
a1-bC2-dEf3-ghIj
j1-Ih2-gfE3-dCba
*/