LeetCode in Kotlin

2785. Sort Vowels in a String

Medium

Given a 0-indexed string s, permute s to get a new string t such that:

Return the resulting string.

The vowels are 'a', 'e', 'i', 'o', and 'u', and they can appear in lowercase or uppercase. Consonants comprise all letters that are not vowels.

Example 1:

Input: s = “lEetcOde”

Output: “lEOtcede”

Explanation: ‘E’, ‘O’, and ‘e’ are the vowels in s; ‘l’, ‘t’, ‘c’, and ‘d’ are all consonants. The vowels are sorted according to their ASCII values, and the consonants remain in the same places.

Example 2:

Input: s = “lYmpH”

Output: “lYmpH”

Explanation: There are no vowels in s (all characters in s are consonants), so we return “lYmpH”.

Constraints:

Solution

class Solution {
    fun sortVowels(s: String): String {
        val vowelCount = IntArray(11)
        val countIndexMap = IntArray(128)
        val result = s.toCharArray()
        val charMap = "AEIOUaeiou".toCharArray()
        run {
            var i = 0
            while (i < charMap.size) {
                countIndexMap[charMap[i].code] = ++i
            }
        }
        for (c in result) vowelCount[countIndexMap[c.code]]++
        var j = 1
        var i = 0
        while (j < vowelCount.size) {
            if (vowelCount[j] > 0) {
                while (i < result.size) {
                    if (countIndexMap[result[i++].code] == 0) continue
                    vowelCount[j]--
                    result[i - 1] = charMap[j - 1]
                    break
                }
            } else {
                j++
            }
        }
        return String(result)
    }
}
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy