LeetCode in Kotlin

824. Goat Latin

Easy

You are given a string sentence that consist of words separated by spaces. Each word consists of lowercase and uppercase letters only.

We would like to convert the sentence to “Goat Latin” (a made-up language similar to Pig Latin.) The rules of Goat Latin are as follows:

Return the final sentence representing the conversion from sentence to Goat Latin.

Example 1:

Input: sentence = “I speak Goat Latin”

Output: “Imaa peaksmaaa oatGmaaaa atinLmaaaaa”

Example 2:

Input: sentence = “The quick brown fox jumped over the lazy dog”

Output: “heTmaa uickqmaaa rownbmaaaa oxfmaaaaa umpedjmaaaaaa overmaaaaaaa hetmaaaaaaaa azylmaaaaaaaaa ogdmaaaaaaaaaa”

Constraints:

Solution

class Solution {
    fun toGoatLatin(sentence: String): String {
        val splits = sentence.split(" ".toRegex()).dropLastWhile { it.isEmpty() }.toTypedArray()
        val sb = StringBuilder()
        val a = StringBuilder()
        for (word in splits) {
            if (isVowel(word[0])) {
                sb.append(word).append("ma")
            } else {
                val firstChar = word[0]
                sb.append(word.substring(1)).append(firstChar).append("ma")
            }
            a.append("a")
            sb.append(a)
            sb.append(" ")
        }
        return sb.toString().trim { it <= ' ' }
    }

    private fun isVowel(c: Char): Boolean {
        return c == 'a' || c == 'e' || c == 'i' || c == 'o' || c == 'u' ||
            c == 'A' || c == 'E' || c == 'I' || c == 'O' || c == 'U'
    }
}