【leetCode】Text Justification

題意:給定一組單詞序列和一個最大的單詞長度,要求按行顯示單詞,單詞之間有空格,每行的最大長度不能超過給定值。對於非末行,空格的長度均勻分配,對於末行,左對齊顯示,即單詞之間只能有一個空格,剩餘的空格在最後一個單詞之後。

思路:沒什麼特別的,純模擬題。

代碼:

vector<string> fullJustify(vector<string>& words, int maxWidth)
{
    vector<int> length;
    vector<string> ans;
    int i,j,k,last,total,remain,a,ns,size=words.size();
    if(size==0 ) return ans;
    for(i=0; i<size; i++) length.push_back(words[i].length());
    last=0;
    total=0;
    for(i=0; i<size; i++)
    {
        total=total+words[i].length()+(i==last?0:1);
        if(total>maxWidth)
        {
            cout<<i<<endl;
            total=0;
            for(k=last; k<i; k++)total+=words[k].length();
            remain=maxWidth-total;
            i--;
            string temp="";
            for(k=last; k<=i; k++)
            {
                temp+=words[k];
                if(k!=i)
                {
                    ns=remain/(i-k);
                    if(remain%(i-k)!=0) ns++;
                    for(j=0; j<ns; j++) temp+=" ";
                    remain=remain-ns;
                }
            }
            for(k=0;k<remain;k++) temp+=" ";
            ans.push_back(temp);
            total=0;
            last=i+1;
        }
        else if(i==size-1)
        {
            total=0;
            for(k=last; k<=i; k++)total+=words[k].length();
            remain=maxWidth-total;
            string temp="";
            for(k=last; k<=i; k++)
            {
                temp+=words[k];
                if(remain>0)temp+=" ";
                remain--;
            }
            for(k=0;k<remain;k++) temp+=" ";
            ans.push_back(temp);
        }
    }
    return ans;
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章