zoukankan      html  css  js  c++  java
  • LeetCode "Text Justification"

    Just take care of corner cases!

    class Solution {
    public:
        vector<string> fullJustify(vector<string> &words, int L) {
            vector<string> ret;
    
            int startInx = 0;
            while (startInx < words.size())
            {
                //    Get word count a line
                int wcnt = 0, spcnt = 0;
                int i = 0;
                bool lastRm = false;
                for (i = startInx; i < words.size(); i++)
                {
                    wcnt += words[i].length();
                    spcnt = i - startInx + wcnt;
                    if (spcnt >= L)
                    {
                        lastRm = spcnt > L;
                        break;
                    }
                }
    
                if (!lastRm) // good luck
                {
                    string line;
                    for (int j = startInx; j <= i && j < words.size(); j++)
                    {
                        line += words[j];
                        if (j < i) line += ' ';
                    }
                    if (line.length() < L)    // should only happen to last word
                    {
                        line.append(L - line.length(), ' ');
                    }
                    ret.push_back(line);
                }
                else    // needs to chop last one
                {
                    //    Handle spaces
                    spcnt -= words[i].length() + 1;
                    int slotCnt = i - startInx - 1;
                    int sp2fill = L - spcnt + slotCnt;
                    vector<string> sp; 
                    if (slotCnt == 0) slotCnt = 1;
                    sp.resize(slotCnt);
                    for (int k = 0; k < sp2fill; k++)
                    {
                        sp[k % slotCnt] += ' ';
                    }
                    //    Compose
                    string line;
                    for (int j = startInx; j < i; j++)
                    {
                        line += words[j];
                        if (j < i - 1 || (i - startInx) == 1)
                        {
                            line += sp[j - startInx];
                        }
                    }
                    ret.push_back(line);
                }
    
                startInx = lastRm ? i : i + 1;
            }
    
            return ret;
        }
    };
  • 相关阅读:
    PHPEXCEL 导出多个sheet
    android adb.exe端口占用
    imageview 显示assets的图片

    Java中日期问题
    java中的定时器的实现样例
    Oracle数据库如何干净的删除
    MySQL索引相关知识
    JavaScript基础知识总结
    JDBC技术总结
  • 原文地址:https://www.cnblogs.com/tonix/p/3909243.html
Copyright © 2011-2022 走看看