68. Text Justification
Given an array of words and a width
maxWidth
, format the text such that each line as exactlymaxWidth
characters and is fully (left and right) justified.
题目的意思是, 给一个数组, 数组里面有$n$个单词, 把这些单词按照maxWidth
行存放. 每一行的两端要对齐.
需要注意的是
思路
其实这类型的题目没有什么精巧的算法可以做. 它的难点在于, 要处理的corner case太多, 比较繁琐. 对于这道题目, 几个需要解决的地方如下:
一行要放多少单词?
- 每一行单词的总长度加上最少空格数量应当小于等于
maxWidth
- 每一行单词的总长度加上最少空格数量应当小于等于
知道每一行的单词数量空格需要怎么分配?
- 每一行的空格数量是
maxWidth
减去该行单词的总长度 - 每一行可以填空格的地方是单词数量-1
- 多余的空格优先添加到左边单词的间隔当中
- 每一行的空格数量是
Code
1 | def fullJustify(words, maxWidth): |
EOF