题目:

题解:
# blank 返回长度为 n 的由空格组成的字符串
def blank(n: int) -> str:
return ' ' * n
class Solution:
def fullJustify(self, words: List[str], maxWidth: int) -> List[str]:
ans = []
right, n = 0, len(words)
while True:
left = right # 当前行的第一个单词在 words 的位置
sumLen = 0 # 统计这一行单词长度之和
# 循环确定当前行可以放多少单词,注意单词之间应至少有一个空格
while right < n and sumLen + len(words[right]) + right - left <= maxWidth:
sumLen += len(words[right])
right += 1
# 当前行是最后一行:单词左对齐,且单词之间应只有一个空格,在行末填充剩余空格
if right == n:
s = " ".join(words[left:])
ans.append(s + blank(maxWidth - len(s)))
break
numWords = right - left
numSpaces = maxWidth - sumLen
# 当前行只有一个单词:该单词左对齐,在行末填充空格
if numWords == 1:
ans.append(words[left] + blank(numSpaces))
continue
# 当前行不只一个单词
avgSpaces = numSpaces // (numWords - 1)
extraSpaces = numSpaces % (numWords - 1)
s1 = blank(avgSpaces + 1).join(words[left:left + extraSpaces + 1]) # 拼接额外加一个空格的单词
s2 = blank(avgSpaces).join(words[left + extraSpaces + 1:right]) # 拼接其余单词
ans.append(s1 + blank(avgSpaces) + s2)
return ans
本文介绍了一个名为Solution的类,其中的fullJustify方法用于将给定的单词列表按照指定的最大宽度进行等宽全justify排列,确保每个单词之间的间距均匀,包括单词间的空格和行尾的填充。
5328

被折叠的 条评论
为什么被折叠?



