LeetCode in Kotlin

917. Reverse Only Letters

Easy

Given a string s, reverse the string according to the following rules:

Return s after reversing it.

Example 1:

Input: s = “ab-cd”

Output: “dc-ba”

Example 2:

Input: s = “a-bC-dEf-ghIj”

Output: “j-Ih-gfE-dCba”

Example 3:

Input: s = “Test1ng-Leet=code-Q!”

Output: “Qedo1ct-eeLg=ntse-T!”

Constraints:

Solution

class Solution {
    fun reverseOnlyLetters(s: String): String {
        val array = s.toCharArray()
        var i = 0
        var j = array.size - 1
        while (i < j) {
            if (Character.isLetter(array[i]) && Character.isLetter(array[j])) {
                val temp = array[i]
                array[i++] = array[j]
                array[j--] = temp
            } else if (Character.isLetter(array[i])) {
                j--
            } else if (Character.isLetter(array[j])) {
                i++
            } else {
                i++
                j--
            }
        }
        return String(array)
    }
}