LeetCode in Kotlin

3775. Reverse Words With Same Vowel Count

Medium

You are given a string s consisting of lowercase English words, each separated by a single space.

Determine how many vowels appear in the first word. Then, reverse each following word that has the same vowel count. Leave all remaining words unchanged.

Return the resulting string.

Vowels are 'a', 'e', 'i', 'o', and 'u'.

Example 1:

Input: s = “cat and mice”

Output: “cat dna mice”

Explanation:

Example 2:

Input: s = “book is nice”

Output: “book is ecin”

Explanation:

Example 3:

Input: s = “banana healthy”

Output: “banana healthy”

Explanation:

Constraints:

Solution

class Solution {
    fun reverseWords(s: String): String {
        val wrd = s.toCharArray()
        val vowels = "aeiou"
        var left = 0
        var right: Int
        var firstWrd = 0
        var anotherWrd: Int
        while (left < wrd.size) {
            right = left
            anotherWrd = 0
            while (right < wrd.size && wrd[right] != ' ') {
                if (vowels.indexOf(wrd[right]) != -1) {
                    if (left == 0) {
                        firstWrd++
                    } else {
                        anotherWrd++
                    }
                }
                right++
            }
            if (left != 0 && anotherWrd == firstWrd) {
                var l = left
                var r = right - 1
                while (l < r) {
                    val temp = wrd[r]
                    wrd[r--] = wrd[l]
                    wrd[l++] = temp
                }
            }
            left = right + 1
        }
        return String(wrd)
    }
}