import Foundation
func formatLines(words: [String], maxWidth: Int) -> [String] {
var result: [String] = []
var currentLine = ""
var currentLength = 0
for word in words {
let wordLen = word.count
// If adding this word exceeds maxWidth, push current line
if currentLength + (currentLine.isEmpty ? 0 : 1) + wordLen > maxWidth {
if !currentLine.isEmpty {
result.append(currentLine)
}
currentLine = word
currentLength = wordLen
} else {
if !currentLine.isEmpty {
currentLine += " "
currentLength += 1
}
currentLine += word
currentLength += wordLen
}
}
// Push the last line if not empty
if !currentLine.isEmpty {
result.append(currentLine)
}
return result
}
func main() {
let words = ["This", "is", "a", "programming", "example", "of", "text", "wrapping"]
let maxWidth = 12
let lines = formatLines(words: words, maxWidth: maxWidth)
for line in lines {
print("\"\(line)\"")
}
}
main()
/*
run:
"This is a"
"programming"
"example of"
"text"
"wrapping"
*/