每日刷題 文字左右對齊

2021-09-27 08:08:06 字數 2236 閱讀 9675

給定乙個單詞陣列和乙個長度 maxwidth,重新排版單詞,使其成為每行恰好有 maxwidth 個字元,且左右兩端對齊的文字。

你應該使用「貪心演算法」來放置給定的單詞;也就是說,盡可能多地往每行中放置單詞。必要時可用空格 』 』 填充,使得每行恰好有 maxwidth 個字元。

要求盡可能均勻分配單詞間的空格數量。如果某一行單詞間的空格不能均勻分配,則左側放置的空格數要多於右側的空格數。

文字的最後一行應為左對齊,且單詞之間不插入額外的空格。

說明:單詞是指由非空格字元組成的字串行。

每個單詞的長度大於 0,小於等於 maxwidth。

輸入單詞陣列 words 至少包含乙個單詞。

示例:

例1:

輸入:words = ["this", "is", "an", "example", "of", "text", "justification."]

maxwidth = 16

輸出:[

"this is an",

"example of text",

"justification. "

]例 2:

輸入:words = ["what","must","be","acknowledgment","shall","be"]

maxwidth = 16

輸出:[

"what must be",

"acknowledgment ",

"shall be "

]解釋: 注意最後一行的格式應為 "shall be " 而不是 "shall be", 因為最後一行應為左對齊,而不是左右兩端對齊。 第二行同樣為左對齊,這是因為這行只包含乙個單詞。

例 3:

輸入:words = ["science","is","what","we","understand","well","enough","to","explain","to","a","computer.","art","is","everything","else","we","do"]

maxwidth = 20

輸出:[

"science is what we",

"understand well",

"enough to explain to",

"a computer. art is",

"everything else we",

"do "

]

這道題看起來複雜,實際上並不太困難,讀懂題目很重要。

按照題目要求,逐行填充的單詞和空格即可。

幾個要點:1. 每行的空格如何分配?2. 最後一行單獨處理;3. 若一行內只能容納乙個單詞,應該單獨填充後面的空格。

**:

class

solution

else

continue;}

//頭部第乙個單詞

record +

= words[i++];

//若已經到達了最後一行,則單獨處理

if( j == words.

size()

)//除了放置在頭部的單詞,還剩下 count_words 個單詞

int count_words = j - i +1;

//統計有效的空格數

int count_space =0;

for(

int k = i; k <= j && k < words.

size()

; k++

) count_space +

= words[k]

.size()

; count_space = maxwidth - count_space - record.

size()

;while

( count_space && count_words)

//若每行只有乙個單詞,則需要在尾部進行填充空格

while

( record.

size()

< maxwidth)

record +

=' '

;

res.

push_back

( record);}

return res;}}

;

文字左右對齊

leetcode 給定乙個單詞陣列和乙個長度 maxwidth,重新排版單詞,使其成為每行恰好有 maxwidth 個字元,且左右兩端對齊的文字。你應該使用 貪心演算法 來放置給定的單詞 也就是說,盡可能多地往每行中放置單詞。必要時可用空格 填充,使得每行恰好有 maxwidth 個字元。要求盡可能...

整段文字左右對齊

text align justify text justify inter ideograph text justify版本 ie5 專有屬性 繼承性 無 語法 text justify auto distribute distribute all lines distribute center l...

68 文字左右對齊

給定乙個單詞陣列和乙個長度 maxwidth,重新排版單詞,使其成為每行恰好有 maxwidth 個字元,且左右兩端對齊的文字。你應該使用 貪心演算法 來放置給定的單詞 也就是說,盡可能多地往每行中放置單詞。必要時可用空格 填充,使得每行恰好有 maxwidth 個字元。要求盡可能均勻分配單詞間的空...