leetcode 68 文字左右對齊 c

2021-10-01 22:39:08 字數 1792 閱讀 7841

### 題目

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

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

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

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

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

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

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

示例:輸入:

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                  "

]### 思路

這個題目沒意思是真的麻煩,要考慮每個情況,把情況都考慮清楚就基本沒什麼難度了,第一步先確定每一行最多能放多少個單詞,第二步確定每行可以放的單詞數目是不是只有乙個或者是最後一行(兩者的處理方法是一樣的),第三步再根據兩種情況分別處理。

leetcode 68 文字左右對齊

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

LeetCode68 文字左右對齊

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

LeetCode68文字左右對齊

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