LeetCode_OJ【68】Text Justification
2016-04-19 11:59
337 查看
Given an array of words and a length L, format the text such that each line has exactlyL characters and is fully (left and right) justified.
You should pack your words in a greedy approach; that is, pack as many words as you can in each line. Pad extra spaces
L characters.
Extra spaces between words should be distributed as evenly as possible. If the number of spaces on a line do not divide evenly between words, the empty slots on the left will be assigned more spaces than the slots on the right.
For the last line of text, it should be left justified and no extra space is inserted between words.
For example,
words:
L:
Return the formatted lines as:
Note: Each word is guaranteed not to exceed L in length.
这题实现起来还是比较繁琐的,要注意的地方比较多。
题目最后说每个word都能保证长度不超过给定的L ,这样我们就不用考虑非法输入了。
另外最后一行和只有一个word的行要特殊处理。
java实现如下:
public class Solution {
public List<String> fullJustify(String[] words, int maxWidth) {
List<String> res = new ArrayList<String>();
for(int i = 0,len ,start,wordSum ; i < words.length ; ){
len = 0;
wordSum = 0;
start = i;
StringBuilder line = new StringBuilder();
while(i < words.length && len + words[i].length() <= maxWidth){
wordSum += words[i].length();
len += (1 + words[i].length()); // 默认包含最少一个空格
i++ ;
}
int count = i - start ; //该行word个数
if(count != 1 && i != words.length ){ //i取到length时说明是最后一行
int space = (maxWidth - wordSum) / (count-1);
int rest = (maxWidth - wordSum) % (count-1);
for(int m = 0 ; m < count ; m ++){
line.append(words[start + m]);
//最后一个单词不加空格
if(m != count-1){
for(int n = 0 ; n < space ; n ++)
line.append(" ");
if(rest -- > 0)
line.append(" ");
}
}
}
else {
while(count -- > 0){
line.append(words[start ++]);
if(count != 0)
line.append(" ");
}
while(line.length() < maxWidth)
line.append(" ");
}
res.add(line.toString());
}
return res;
}
}
You should pack your words in a greedy approach; that is, pack as many words as you can in each line. Pad extra spaces
' 'when necessary so that each line has exactly
L characters.
Extra spaces between words should be distributed as evenly as possible. If the number of spaces on a line do not divide evenly between words, the empty slots on the left will be assigned more spaces than the slots on the right.
For the last line of text, it should be left justified and no extra space is inserted between words.
For example,
words:
["This", "is", "an", "example", "of", "text", "justification."]
L:
16.
Return the formatted lines as:
[ "This is an", "example of text", "justification. " ]
Note: Each word is guaranteed not to exceed L in length.
这题实现起来还是比较繁琐的,要注意的地方比较多。
题目最后说每个word都能保证长度不超过给定的L ,这样我们就不用考虑非法输入了。
另外最后一行和只有一个word的行要特殊处理。
java实现如下:
public class Solution {
public List<String> fullJustify(String[] words, int maxWidth) {
List<String> res = new ArrayList<String>();
for(int i = 0,len ,start,wordSum ; i < words.length ; ){
len = 0;
wordSum = 0;
start = i;
StringBuilder line = new StringBuilder();
while(i < words.length && len + words[i].length() <= maxWidth){
wordSum += words[i].length();
len += (1 + words[i].length()); // 默认包含最少一个空格
i++ ;
}
int count = i - start ; //该行word个数
if(count != 1 && i != words.length ){ //i取到length时说明是最后一行
int space = (maxWidth - wordSum) / (count-1);
int rest = (maxWidth - wordSum) % (count-1);
for(int m = 0 ; m < count ; m ++){
line.append(words[start + m]);
//最后一个单词不加空格
if(m != count-1){
for(int n = 0 ; n < space ; n ++)
line.append(" ");
if(rest -- > 0)
line.append(" ");
}
}
}
else {
while(count -- > 0){
line.append(words[start ++]);
if(count != 0)
line.append(" ");
}
while(line.length() < maxWidth)
line.append(" ");
}
res.add(line.toString());
}
return res;
}
}
相关文章推荐
- 解析从源码分析常见的基于Array的数据结构动态扩容机制的详解
- javascript数组操作总结和属性、方法介绍
- mysql_fetch_assoc和mysql_fetch_row的功能加起来就是mysql_fetch_array
- JavaScript Array扩展实现代码
- JavaScript之数组(Array)详解
- Javascript实现Array和String互转换的方法
- C#中Array与ArrayList用法及转换的方法
- Array栈方法和队列方法的特点说明
- Array.prototype.slice 使用扩展
- Array, Array Constructor, for in loop, typeof, instanceOf
- 实例详解ECMAScript5中新增的Array方法
- Javascript数组Array基础介绍
- js Array的用法总结
- JavaScript 判断判断某个对象是Object还是一个Array
- Javascript中的Array数组对象详谈
- js模拟实现Array的sort方法
- 在javascript将NodeList作为Array数组处理的方法
- PHP array_multisort()函数的使用札记
- PHP中array_merge和array相加的区别分析
- Sorting Array Values in PHP(数组排序)