https://leetcode.com/problems/reformat-the-string/description/ Easy

Условие

Дана строка s, содержащая буквы и цифры. Необходимо переформатировать строку так, чтобы буквы и цифры чередовались. Если это невозможно (например, если букв и цифр разное количество, отличающееся более чем на 1), вернуть пустую строку. Итоговая строка должна содержать все символы исходной строки.

Решение

class Solution {
    fun reformat(s: String): String {
        val letters = mutableListOf<Char>()
        val digits = mutableListOf<Char>()
        for (c in s) {
            if (c.isLetter()) letters.add(c)
            else digits.add(c)
        }
        if (kotlin.math.abs(letters.size - digits.size) > 1) return ""
        val result = StringBuilder()
        val larger = if (letters.size >= digits.size) letters else digits
        val smaller = if (letters.size >= digits.size) digits else letters
        for (i in larger.indices) {
            result.append(larger[i])
            if (i < smaller.size) result.append(smaller[i])
        }
        return result.toString()
    }
}