class Solution {
public:
vector<string> fullJustify(vector<string> &words, int l) {
// Start typing your C/C++ solution below
// DO NOT write int main() function
vector<string> res;
if (words.size() == 0 || l < 0) return res;
int begin = 0;
while (begin < words.size())
{
int idx = begin;
int curSize = 0;
while (idx < words.size())
{
int tempSize = curSize == 0 ? words[idx].size() : curSize + words[idx].size() + 1;
if (tempSize <= l)
curSize = tempSize;
else
break;
++idx;
}
int end = idx - 1;
int eachGapSpace = 0;
int remainSpace = l - curSize;
string line = "";
if (end - begin != 0 && end != words.size() - 1)
{
eachGapSpace = remainSpace / (end - begin);
remainSpace %= (end - begin);
}
else
{
eachGapSpace = 0;
}
for (int i = begin; i <= end; ++i)
{
if (i == begin)
line = words[i];
else
{
line += " ";
for (int j = 0; j < eachGapSpace; ++j)
line += " ";
if (remainSpace > 0 && end != words.size() - 1)
{
line += " ";
--remainSpace;
}
line += words[i];
}
}
while (remainSpace > 0)
{
line += " ";
--remainSpace;
}
res.push_back(line);
begin = end + 1;
}
return res;
}
};[LeetCode] Text Justification
最新推荐文章于 2017-12-16 17:58:19 发布
本文介绍了一种文本段落美化算法的实现方法,该算法能够将输入的一系列单词按照指定的行宽进行合理布局,使得段落内的文字既美观又符合阅读习惯。通过计算每个单词之间的空格数来达到均匀分布的目的,特别处理了最后一行左对齐的特殊情况。
321

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



