题目描述
68. 文本左右对齐
AC代码
class Solution {
public List<String> fullJustify(String[] words, int maxWidth) {
List<String> res=new ArrayList<>();
for(int i=0;i<words.length;){
int j=i+1,s=words[i].length(),rs=words[i].length();
while(j<words.length&&s+1+words[j].length()<=maxWidth){
s+=words[j].length()+1;
rs+=words[j].length();
j++;
}
rs=maxWidth-rs;
String line=words[i];
if(j==words.length){
for(int k=i+1;k<j;k++) line+=' '+words[k];
line+=space(maxWidth-line.length());
}else if(j-i==1){
line+=space(maxWidth-line.length());
}else{
int base=rs/(j-i-1);
int rem=rs%(j-i-1);
i++;
for(int k=0;i<j;i++,k++)
line+=space(base+(k<rem?1:0))+words[i];
}
i=j;
res.add(line);
}
return res;
}
public String space(int x){
String res="";
while(x>0){
x--;
res+=' ';
}
return res;
}
}