Text Justification
Level: AdvancedConcepts: Strings Algorithms
Create a program that justifies text to fit a specified width.
Requirements
- Implement text justification rules:
- Break text into lines of specified width
- Distribute spaces evenly between words
- Left-align the last line of text
- Handle single words per line
- Handle edge cases:
- Empty input
- Input shorter than line width
- Words longer than line width
- Multiple consecutive spaces
- Return appropriate results:
- Justified text as an array of strings
- Error message for invalid inputs
Test Cases
Input | Width | Expected Output | Notes |
---|---|---|---|
"This is a test" | 16 | ["This is a", "test"] | Even space distribution |
"This is a test" | 14 | ["This is a", "test"] | Uneven space distribution |
"This is a test" | 20 | ["This is a test"] | No justification needed |
"This is a very long word" | 10 | ["This is a", "very long", "word"] | Multiple line breaks |
"Word" | 10 | ["Word"] | Single word |
"This is a test" | 16 | ["This is a", "test"] | Handle multiple spaces |
Edge Cases to Consider
- Empty string
- Null input
- Zero or negative width
- Very long words
- Multiple consecutive spaces or tabs
- Text with line breaks
Tips
- Start with simple cases (no justification needed)
- Add basic line breaking next
- Then implement space distribution
- Finally add special case handling
- Consider using a helper method for space distribution