标签:style blog color io ar for div 问题 代码
在一段时间没刷题之后,我发现脑子严重地滞涩了。这题AC花了好大力气,出现了Memory Limit Exceed,Core Dump,以及各种普通的编译、运行错误。MLE 和 CD错误是比较难检查的, 只能通过打印来定位,最后发现原来是循环变量未赋值,导致死循环!!!这种错误简直是不能原谅的。二至于其他的各种问题,则是由于脑子里面没有清晰的算法思路,以致一些case不能通过。这种问题,需要经过大量的训练,以及集中精力地编写代码,才能逐渐减少甚至避免。
当然,另一方面,总体思路上,比第一次AC清晰了许多。每一行的形成需要在下一行开头单词出现以后进行判断以及添加,这样避免了在当前行进行判断需要考虑多种情况的问题。代码如下:
public class Solution { public ArrayList<String> fullJustify(String[] words, int L) { ArrayList<String> res=new ArrayList<String>(); ArrayList<String> line=new ArrayList<String>(); int len=0; for(int i=0;i<words.length;i++) { String cw=words[i]; if(line.size()+len+cw.length()>L) { String s=""; String interval=""; int sc=0,sr=0; if(line.size()==1) { sc=L-len; sr=0; s=line.get(0); for(int j=0;j<sc;j++) interval+=" "; s+=interval; res.add(s); } else { sc=(L-len)/(line.size()-1); sr=(L-len)%(line.size()-1); s=s+line.get(0); for(int j=0;j<sc;j++) interval+=" "; int ct=sr; for(int j=1;j<line.size();j++) { String ts=interval; if(ct>0) { ts=interval+" "; ct--; } s=s+ts; s=s+line.get(j); } res.add(s); } len=cw.length(); line=new ArrayList<String>(); line.add(cw); if(i==words.length-1) { s=cw; sc=L-cw.length(); for(int j=0;j<sc;j++) s=s+" "; res.add(s); } } else { line.add(cw); len+=cw.length(); int l=0; if(i==words.length-1) { String s=line.get(0); l=s.length(); for(int j=1;j<line.size();j++) { s=s+" "; s=s+line.get(j); l=l+1+line.get(j).length(); } int rem=L-l; for(int j=0;j<rem;j++) { s=s+" "; } res.add(s); } } } return res; } }
标签:style blog color io ar for div 问题 代码
原文地址:http://www.cnblogs.com/zhizhizhiyuan/p/3949153.html