Welcome to collectivesolver - Programming & Software Q&A with code examples. A website with trusted programming answers. All programs are tested and work.

Contact: aviboots(AT)netvision.net.il

Buy a domain name - Register cheap domain names from $0.99 - Namecheap

Scalable Hosting That Grows With You

Secure & Reliable Web Hosting, Free Domain, Free SSL, 1-Click WordPress Install, Expert 24/7 Support

Semrush - keyword research tool

Boost your online presence with premium web hosting and servers

Disclosure: My content contains affiliate links.

40,003 questions

51,950 answers

573 users

How to format an array of strings in lines with maxWidth without breaking the words in Kotlin

1 Answer

0 votes
fun formatLines(words: List<String>, maxWidth: Int): List<String> {
    val result = mutableListOf<String>()
    var currentLine = StringBuilder()
    var currentLength = 0

    for (word in words) {
        val wordLen = word.length

        // If adding this word exceeds maxWidth, push current line
        if (currentLength + (if (currentLine.isEmpty()) 0 else 1) + wordLen > maxWidth) {

            if (currentLine.isNotEmpty()) {
                result.add(currentLine.toString())
            }
            currentLine = StringBuilder(word)
            currentLength = wordLen
        } else {
            if (currentLine.isNotEmpty()) {
                currentLine.append(" ")
                currentLength++
            }
            currentLine.append(word)
            currentLength += wordLen
        }
    }

    // Push the last line if not empty
    if (currentLine.isNotEmpty()) {
        result.add(currentLine.toString())
    }

    return result
}

fun main() {
    val words = listOf("This", "is", "a", "programming", "example", "of", "text", "wrapping")
    val maxWidth = 12

    val lines = formatLines(words, maxWidth)

    for (line in lines) {
        println("\"$line\"")
    }
}



/*
run:

"This is a"
"programming"
"example of"
"text"
"wrapping"

*/

 



answered Dec 2, 2025 by avibootz

Related questions

...