AlgoInsight

DSA problem

Text Justification

HardStringsPattern: Simulationtop600GoogleAirbnbAmazonLinkedIn

Given an array of strings words and a width maxWidth, format the text such that each line has exactly maxWidth characters and is fully (left and right) justified.

You should pack your words in a greedy approach; that is, pack as many words as you can in each line. Pad extra spaces ' ' when necessary so that each line has exactly maxWidth characters.

Extra spaces between words should be distributed as evenly as possible. If the number of spaces on a line does not divide evenly between words, the empty slots on the left will be assigned more spaces than the slots on the right.

For the last line of text, it should be left-justified, and no extra space is inserted between words.

Note:

Examples

Example 1
Input: words = ["This", "is", "an", "example", "of", "text", "justification."], maxWidth = 16
Output: [ "This is an", "example of text", "justification. " ]
Explanation: The first two lines are fully justified by distributing spaces; the last line "justification." is left-justified and padded with trailing spaces.
Example 2
Input: words = ["What","must","be","acknowledgment","shall","be"], maxWidth = 16
Output: [ "What must be", "acknowledgment ", "shall be " ]
Explanation: Note that the last line is "shall be " instead of "shall be", because the last line must be left-justified instead of fully justified. The second line is also left-justified because it contains only one word.
Example 3
Input: words = ["Science","is","what","we","understand","well","enough","to","explain","to","a","computer."], maxWidth = 20
Output: [ "Science is what we", "understand well", "enough to explain to", "a computer." ]
Explanation: Each non-final line is expanded to exactly 20 characters with evenly distributed spaces; the final line is left-justified.

Constraints

3 hints and a full solution walkthrough with step-by-step visualizations are available in the practice editor.

arraystringsimulation

Browse all DSA problems