C++如何實(shí)現(xiàn)文本左右對(duì)齊

本文小編為大家詳細(xì)介紹“C++如何實(shí)現(xiàn)文本左右對(duì)齊”,內(nèi)容詳細(xì),步驟清晰,細(xì)節(jié)處理妥當(dāng),希望這篇“C++如何實(shí)現(xiàn)文本左右對(duì)齊”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學(xué)習(xí)新知識(shí)吧。

創(chuàng)新互聯(lián)主要從事網(wǎng)站設(shè)計(jì)、網(wǎng)站制作、網(wǎng)頁(yè)設(shè)計(jì)、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)鎮(zhèn)雄,十余年網(wǎng)站建設(shè)經(jīng)驗(yàn),價(jià)格優(yōu)惠、服務(wù)專業(yè),歡迎來電咨詢建站服務(wù):18980820575

Text Justification 文本左右對(duì)齊

Example 1:

Input:
words = ["This", "is", "an", "example", "of", "text", "justification."]
maxWidth = 16
Output:
[
"This    is    an",
"example  of text",
"justification.  "
]

Example 2:

Input:
words = ["What","must","be","acknowledgment","shall","be"]
maxWidth = 16
Output:
[
"What   must   be",
"acknowledgment  ",
"shall be        "
]
Explanation: Note that the last line is "shall be    " instead of "shall     be",
because the last line must be left-justified instead of fully-justified.
Note that the second line is also left-justified becase it contains only one word.

Example 3:

Input:
words = ["Science","is","what","we","understand","well","enough","to","explain",
"to","a","computer.","Art","is","everything","else","we","do"]
maxWidth = 20
Output:
[
"Science  is  what we",
"understand      well",
"enough to explain to",
"a  computer.  Art is",
"everything  else  we",
"do                  "
]

我將這道題翻譯為文本的左右對(duì)齊是因?yàn)檫@道題像極了word軟件里面的文本左右對(duì)齊功能,這道題我前前后后折騰了快四個(gè)小時(shí)終于通過了OJ,完成了之后想著去網(wǎng)上搜搜看有沒有更簡(jiǎn)單的方法,搜了一圈發(fā)現(xiàn)都差不多,都挺復(fù)雜的,于是乎就按自己的思路來說吧,由于返回的結(jié)果是多行的,所以我們?cè)谔幚淼臅r(shí)候也要一行一行的來處理,首先要做的就是確定每一行能放下的單詞數(shù),這個(gè)不難,就是比較n個(gè)單詞的長(zhǎng)度和加上n - 1個(gè)空格的長(zhǎng)度跟給定的長(zhǎng)度L來比較即可,找到了一行能放下的單詞個(gè)數(shù),然后計(jì)算出這一行存在的空格的個(gè)數(shù),是用給定的長(zhǎng)度L減去這一行所有單詞的長(zhǎng)度和。得到了空格的個(gè)數(shù)之后,就要在每個(gè)單詞后面插入這些空格,這里有兩種情況,比如某一行有兩個(gè)單詞"to" 和 "a",給定長(zhǎng)度L為6,如果這行不是最后一行,那么應(yīng)該輸出"to   a",如果是最后一行,則應(yīng)該輸出 "to a  ",所以這里需要分情況討論,最后一行的處理方法和其他行之間略有不同。最后一個(gè)難點(diǎn)就是,如果一行有三個(gè)單詞,這時(shí)候中間有兩個(gè)空,如果空格數(shù)不是2的倍數(shù),那么左邊的空間里要比右邊的空間里多加入一個(gè)空格,那么我們只需要用總的空格數(shù)除以空間個(gè)數(shù),能除盡最好,說明能平均分配,除不盡的話就多加個(gè)空格放在左邊的空間里,以此類推,具體實(shí)現(xiàn)過程還是看代碼吧:

class Solution {
public:
    vector<string> fullJustify(vector<string> &words, int L) {
        vector<string> res;
        int i = 0;
        while (i < words.size()) {
            int j = i, len = 0;
            while (j < words.size() && len + words[j].size() + j - i <= L) {
                len += words[j++].size();
            }
            string out;
            int space = L - len;
            for (int k = i; k < j; ++k) {
                out += words[k];
                if (space > 0) {
                    int tmp;
                    if (j == words.size()) { 
                        if (j - k == 1) tmp = space;
                        else tmp = 1;
                    } else {
                        if (j - k - 1 > 0) {
                            if (space % (j - k - 1) == 0) tmp = space / (j - k - 1);
                            else tmp = space / (j - k - 1) + 1;
                        } else tmp = space;
                    }
                    out.append(tmp, " ");
                    space -= tmp;
                }
            }
            res.push_back(out);
            i = j;
        }
        return res;
    }
};

讀到這里,這篇“C++如何實(shí)現(xiàn)文本左右對(duì)齊”文章已經(jīng)介紹完畢,想要掌握這篇文章的知識(shí)點(diǎn)還需要大家自己動(dòng)手實(shí)踐使用過才能領(lǐng)會(huì),如果想了解更多相關(guān)內(nèi)容的文章,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。

文章名稱:C++如何實(shí)現(xiàn)文本左右對(duì)齊
URL鏈接:http://bm7419.com/article2/pscioc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站制作、企業(yè)建站、網(wǎng)站收錄靜態(tài)網(wǎng)站、定制開發(fā)、服務(wù)器托管

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

小程序開發(fā)