码迷,mamicode.com
首页 > 其他好文 > 详细

Text Justification

时间:2014-09-01 15:21:03      阅读:183      评论:0      收藏:0      [点我收藏+]

标签: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;
    }
}

 

Text Justification

标签:style   blog   color   io   ar   for   div   问题   代码   

原文地址:http://www.cnblogs.com/zhizhizhiyuan/p/3949153.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!