68 文字左右對齊

2021-08-19 23:50:16 字數 2019 閱讀 9688

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

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

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

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

說明:

示例:

輸入:

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                  "

]

思路:遍歷整個字串陣列,我們採用兩個變數c1和c2分別來統計,字串所佔的文字(每兩個字串之間至少有乙個空格)的最小長度和字串的總長度(沒有空格)。當c1的大小超過maxwidth時,我們就找到了一行文字,接下來該怎麼規劃這行文字呢?具體分為兩種情況:當這一行文字只有乙個字串的時候,那麼就放置在前面,後面補齊空格即可。當這一行文字有多個字串的時候:

1、算出這行文字除了所有字串總長度c2之外,還剩下多少空格。

2、算出一共有幾個位置來分配這些空格。

3、1中結果/2中結果,算出每個位置至少放多少空格,用num表示。

4、考慮到當空格不能均勻分配的時候,多出來的空格數,用over_num表示,要盡可能放在前面的位置。

所有的字串處理完了之後,要額外考慮一下最後一行文字。要盡可能可前面位置放置,而且每個字串之間只有乙個空格,剩下的位置補齊空格即可。

class solution 

if(s2.size()>maxwidth) s2.resize(maxwidth);//有可能s2.size()比maxwidth多出來乙個空格

s2+=string(maxwidth-s2.size(),' ');

re.back()=s2;

return re;

}};

leetcode 68 文字左右對齊

原理很簡單,但是寫起來比較複雜,首先將不超過maxwidth的字串放入乙個新的陣列result,不要忽略空格所佔空間 對result進行處理,首先去除字串最後面的乙個或多個空格,然後計算去除空格後的字串大小,用過最大大小減去去除空格之後的字串大小,得到d 用除以單詞個數 1 即為原來每個空格位置需要...

LeetCode68 文字左右對齊

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

LeetCode68文字左右對齊

1.先取出一行能夠容納的單詞,將這些單詞根據規則填入一行 2.計算出額外空格的數量 spacecount,額外空格就是正常書寫用不到的空格 2.1除去所有單詞的長度 3.平均分布 簡單來說就是商和餘數的計算 4.特殊處理 4.1一行只有乙個單詞,單詞左對齊,右側填滿空格 4.2最後一行,所有單詞左對...