一个字,烦。不难。
每个人有每个人的解法。
class Solution {
public:
string process(vector<string> &tmp,int L,int len){
if(tmp.size()==1){
int space_num = L-tmp[0].length();
while(space_num--)
tmp[0]+=" ";
return tmp[0];
}
int space_num = (L-len)/(tmp.size()-1);
int extra_space = (L-len)%(tmp.size()-1);
string s="";
for(int j=0;j<tmp.size()-1;++j){
s+=tmp[j];
for(int k=0;k<=space_num;++k)
s+=" ";
if(extra_space){
s+=" ";
--extra_space;
}
}
s+=tmp[tmp.size()-1];
return s;
}
vector<string> fullJustify(vector<string> &words, int L) {
vector<string> res;
int len = 0;
int i = 0;
vector<string> tmp;
while(i<words.size()){
if(tmp.empty()){
tmp.push_back(words[i]);
len = words[i].length();
++i;
continue;
}
if((words[i].length()+1+len)<=L){
len += (words[i].length()+1);
tmp.push_back(words[i]);
++i;
}
else{
res.push_back(process(tmp,L,len));
vector<string>().swap(tmp);
len=0;
}
}
string last_line;
if(tmp.empty()||tmp.size()==1)
last_line = words.back();
else{
for(int i=0;i<tmp.size()-1;++i){
last_line+=tmp[i];
last_line+=" ";
}
last_line+=tmp.back();
}
int remain_space = L-last_line.length();
while(remain_space--)
last_line+=" ";
res.push_back(last_line);
return res;
}
};