zoukankan      html  css  js  c++  java
  • Text Justification

      在一段时间没刷题之后,我发现脑子严重地滞涩了。这题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;
        }
    }
  • 相关阅读:
    软件体系架构阅读笔记(六)
    软件体系架构阅读笔记(五)
    软件体系架构阅读笔记(四)
    软件体系架构阅读笔记(三)
    软件体系架构阅读笔记(二)
    软件体系架构阅读笔记(一)
    问题账户需求分析
    2018年春季个人阅读计划
    阅读《我们怎样做软件需求分析》有感
    1.5:设计模式
  • 原文地址:https://www.cnblogs.com/zhizhizhiyuan/p/3949153.html
Copyright © 2011-2022 走看看