How to reverse only the alphabetic characters in a string, keeping other characters in place with Kotlin

1 Answer

0 votes
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

*/

 



answered Mar 6 by avibootz

Related questions

...