1.最后一行的处理与前面不一样
2.空格需要均匀分布
class Solution {
public:
vector<string> fullJustify(vector<string>& words, int maxWidth) {
int n=words.size();
vector<string> ans;
int i,j;
int cur=0;
int num=0;
for(i=0;i<n;i+=num)
{
cur=0;
num=0;
int space=0;
string tmp="";
for(j=i;j<n;j++)
{
cur+=words[j].size();
num++;
if(cur+num-1>maxWidth)
break;
}
if(cur+num-1>maxWidth)
{
cur-=words[j].size();
num--;
}
if(j>=n)
{
for(j=i;j<i+num-1;j++)
{
words[j]+=' ';
tmp+=words[j];
}
tmp+=words[j];
int len=tmp.size();
for(j=0;j<maxWidth-len;j++)
tmp+=' ';
}
else
{
space=maxWidth-cur;
while(space)
{
if(num==1)
{
words[i]+=' ';
space--;
}
for(j=i;j<i+num-1&&space;j++)
{
words[j]+=' ';
space--;
}
}
for(j=i;j<i+num;j++)
tmp+=words[j];
}
ans.push_back(tmp);
}
return ans;
}
};
文本两端对齐算法实现
本文介绍了一种用于将文本两端对齐的算法实现方法,该算法能够处理最后一行的特殊对齐需求,并确保空格在文本中均匀分布。通过使用C++编程语言,我们详细展示了如何计算每行中单词的数量、字符总数以及所需的空格数量,从而达到指定的最大宽度限制。
326

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



