LeetCode 68. 文本左右对齐
原题链接
简单
作者:
冷丁Hacker
,
2022-03-31 18:44:23
,
所有人可见
,
阅读 171
class Solution {
public:
string space(int x){
string res;
while(x--){
res+=' ';
}
return res;
}
vector<string> fullJustify(vector<string>& words, int maxWidth) {
vector<string> ans;
for(int i=0;i<words.size();){
int j=i+1,s=words[i].size(),rs=words[i].size();
while(j<words.size()&&s+1+words[j].size()<=maxWidth){
s+=1+words[j].size();
rs+=words[j].size();
j++;
}
rs=maxWidth-rs;
string path=words[i];
if(j==words.size()){
for(i=i+1;i<j;i++){
path+=' '+words[i];
}
while(path.size()<maxWidth)path+=' ';
}else if(j-i==1){
path+=space(rs);
}else{
int base=rs/(j-i-1);
int rem=rs%(j-i-1);
i++;
for(int k=0;i<j;i++,k++){
path+=space(base+(k<rem))+words[i];
}
}
i=j;
ans.push_back(path);
}
return ans;
}
};