日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

算法:文本左右对齐

發布時間:2025/6/15 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 算法:文本左右对齐 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

題目

給定一個單詞數組和一個長度 maxWidth,重新排版單詞,使其成為每行恰好有 maxWidth 個字符,且左右兩端對齊的文本。

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

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

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

說明:

  • 單詞是指由非空格字符組成的字符序列。
  • 每個單詞的長度大于 0,小于等于 maxWidth。
  • 輸入單詞數組 words 至少包含一個單詞。

示例:

輸入: words = ["This", "is", "an", "example", "of", "text", "justification."] maxWidth = 16 輸出: ["This is an","example of text","justification. " ] //文本左右對齊1.盡可能多的在每行放置更多的單詞,必要時用' '填充 2.要求更可能均勻的分配單詞間空格的數量,如果某一行不能均勻分配,那左側放置的空格數要多于右側 3.文本最后一行要左對齊,且單詞之間不能插入額外的空格string fillWords(vector<string>& words, int bg, int ed, int maxWidth, bool lastLine = false){//單詞數量int wordCount = ed - bg + 1;int spaceCount = maxWidth + 1 - wordCount; // 除去每個單詞尾部空格, + 1 是最后一個單詞的尾部空格的特殊處理for (int i = bg; i <= ed; i++){spaceCount -= words[i].size(); // 除去所有單詞的長度}//spaceCount是剩下的總空格數int spaceSuffix = 1; // 詞尾空格int spaceAvg = (wordCount == 1) ? 1 : spaceCount / (wordCount - 1); // 額外空格的平均值int spaceExtra = (wordCount == 1) ? 0 : spaceCount % (wordCount - 1); // 額外空格的余數string ans;for (int i = bg; i < ed; i++){ans += words[i]; // 填入單詞if (lastLine) // 特殊處理最后一行{fill_n(back_inserter(ans), 1, ' ');continue;}fill_n(back_inserter(ans), spaceSuffix + spaceAvg + ((i - bg) < spaceExtra), ' '); // 根據計算結果補上空格}ans += words[ed]; // 填入最后一個單詞fill_n(back_inserter(ans), maxWidth - ans.size(), ' '); // 補上這一行最后的空格return ans; }//每行有maxWidth字符,包括空格 vector<string> fullJustify(vector<string>& words, int maxWidth) {vector<string> ans;int cnt = 0;int bg = 0;for (int i = 0; i < words.size(); i++){cnt += words[i].size() + 1;if (i + 1 == words.size() || cnt + words[i + 1].size() > maxWidth){ // 如果是最后一個單詞,或者加上下一個詞就超過長度了,即可湊成一行ans.push_back(fillWords(words, bg, i, maxWidth, i + 1 == words.size()));bg = i + 1;cnt = 0;}}return ans; }

鏈接:https://leetcode-cn.com/problems/text-justification/solution/text-justification-by-ikaruga/

總結

以上是生活随笔為你收集整理的算法:文本左右对齐的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。