[leetcode-68]Text Justification(java)
2015-08-04 11:20
656 查看
问题描述:
Given an array of words and a length L, format the text such that each line has exactly L 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 ’ ’ 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.
分析:这道题可能就是细节稍微多一点,其他的都还好。
代码如下:332ms
Given an array of words and a length L, format the text such that each line has exactly L 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 ’ ’ 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.
分析:这道题可能就是细节稍微多一点,其他的都还好。
代码如下:332ms
[code]public class Solution { public List<String> fullJustify(String[] words, int maxWidth) { List<String> res = new LinkedList<>(); List<String> tmpList = new LinkedList<>(); int length = words.length; int count = 0; for(int i = 0;i<length;i++){ count+=words[i].length()+1; tmpList.add(words[i]); if(i+1<length && count+words[i+1].length()>maxWidth){ int neededSpace = maxWidth-count+1; int size = tmpList.size(); int average,extra; if(size==1) { average = neededSpace; extra = 0; } else{ average =neededSpace/(size-1); extra = neededSpace%(size-1); } StringBuilder spaceStr = new StringBuilder(); for(int j = 0;j<average;j++) spaceStr.append(' '); StringBuilder builder = new StringBuilder(); while(!tmpList.isEmpty()) { String tmp = tmpList.get(0); tmpList.remove(0); builder.append(tmp); if (tmpList.isEmpty()) break; builder.append(' '); builder.append(spaceStr); if (extra > 0) { builder.append(' '); extra--; } } while(builder.length()<maxWidth){ builder.append(' '); } res.add(new String(builder)); count=0; } } StringBuilder builder = new StringBuilder(); while(!tmpList.isEmpty()){ builder.append(tmpList.get(0)); tmpList.remove(0); builder.append(' '); } while (builder.length()<maxWidth) builder.append(' '); if(builder.length()>maxWidth) builder.deleteCharAt(maxWidth); res.add(builder.toString()); return res; } }
相关文章推荐
- Spring常用jar包的剖析
- Ubuntu下Eclipse无法正常启动问题解决
- spring mvc controller取到的中文参数是乱码
- Java:按值传递还是按引用传递详细解说
- 在Eclipse中安装SVN客户端插件
- [乐意黎原创] java里classpath在引入编译文件路径时加星号(*)引起的错误
- eclipse、Myeclipse中的常用快捷键
- JAVA操作HDFS API(hadoop) HDFS API详解
- 杭电ACM2040java做法
- java String字符串
- 2种Java删除ArrayList中的重复元素的方法
- Struts2组合spring
- Eclipse全屏调试时,如何屏蔽控制台console弹出骚扰!!!
- Java的日期转化 和 计算
- Struts2拦截器的使用 (详解)
- java动态数组
- 类加载机制详解(有条理)
- 白盒测试中如何实现真正意义上并发测试(Java)
- Java线程调度器ScheduledThreadPoolExecutor 分析
- 如何把浏览器上显示的页面数据 转换成 java字符串---java.net.URL