https://leetcode.com/problems/rearrange-spaces-between-words/description/ Easy

Решение

class Solution {
    fun reorderSpaces(text: String): String {
        val n = text.length
        var spaces = 0
        val words = ArrayList<String>()
        val cur = StringBuilder()
        var i = 0
        while (i < n) {
            val c = text[i]
            if (c == ' ') {
                spaces++
                if (cur.isNotEmpty()) {
                    words.add(cur.toString())
                    cur.setLength(0)
                }
            } else {
                cur.append(c)
            }
            i++
        }
        if (cur.isNotEmpty()) words.add(cur.toString())
        val w = words.size
        if (w == 1) {
            val sb = StringBuilder(words[0].length + spaces)
            sb.append(words[0])
            var k = 0
            while (k < spaces) { sb.append(' '); k++ }
            return sb.toString()
        }
        val gap = spaces / (w - 1)
        val tail = spaces - gap * (w - 1)
        val sb = StringBuilder(n)
        i = 0
        while (i < w) {
            sb.append(words[i])
            if (i < w - 1) {
                var k = 0
                while (k < gap) { sb.append(' '); k++ }
            }
            i++
        }
        var k = 0
        while (k < tail) { sb.append(' '); k++ }
        return sb.toString()
    }
}