【堅持每日一題8.29】68. 文本左右對齊

給定一個單詞數(shù)組和一個長度 maxWidth货葬,重新排版單詞,使其成為每行恰好有 maxWidth 個字符,且左右兩端對齊的文本起宽。

你應(yīng)該使用“貪心算法”來放置給定的單詞;也就是說济榨,盡可能多地往每行中放置單詞坯沪。必要時可用空格 ' ' 填充,使得每行恰好有 maxWidth 個字符擒滑。

要求盡可能均勻分配單詞間的空格數(shù)量腐晾。如果某一行單詞間的空格不能均勻分配,則左側(cè)放置的空格數(shù)要多于右側(cè)的空格數(shù)丐一。

文本的最后一行應(yīng)為左對齊藻糖,且單詞之間不插入額外的空格。

說明:

單詞是指由非空格字符組成的字符序列库车。
每個單詞的長度大于 0巨柒,小于等于 maxWidth。
輸入單詞數(shù)組 words 至少包含一個單詞。
示例:

輸入:
words = ["This", "is", "an", "example", "of", "text", "justification."]
maxWidth = 16
輸出:
[
"This is an",
"example of text",
"justification. "
]
示例 2:

輸入:
words = ["What","must","be","acknowledgment","shall","be"]
maxWidth = 16
輸出:
[
"What must be",
"acknowledgment ",
"shall be "
]
解釋: 注意最后一行的格式應(yīng)為 "shall be " 而不是 "shall be",
因為最后一行應(yīng)為左對齊洋满,而不是左右兩端對齊晶乔。
第二行同樣為左對齊,這是因為這行只包含一個單詞芦岂。
示例 3:

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

java代碼:

class Solution {
    public List<String> fullJustify(String[] words, int maxWidth) {

        ArrayList<String> list = new ArrayList<>();

        if(words.length == 1){
            String s = addSpace(words[0], maxWidth - words[0].length());
            list.add(s);
            return list;
        }

        int index = 0;

        while (index < words.length){

            ArrayList<Integer> tempList = new ArrayList<>();
            String s = "";
            int length = 0;
            while (index < words.length){
                s = s + words[index];
                length = length + words[index].length() ;
                if(length <= maxWidth){
                    length++;
                    tempList.add(index);
                    index++;
                }else {
                    length = length - 1 - words[index].length();
                    s = s.substring(0,s.length() - words[index].length());
                    break;
                }
            }

            //最后一行
            if(index == words.length){
                String res = "";
                for(int i = 0; i < tempList.size(); i++){
                    res =res +  words[tempList.get(i)] + " ";
                }
                if(maxWidth - res.length() >= 0) {
                    res = addSpace(res, maxWidth - res.length());
                }else {
                    res = res.substring(0,res.length() - 1);
                }
                list.add(res);
                break;
            }else if(tempList.size() > 1) {
                String res = "";

                //計算空格
                int m = (maxWidth - s.length()) / (tempList.size() - 1);
                int n = (maxWidth - s.length()) % (tempList.size() - 1);
                for(int i = 0; i < tempList.size(); i++){
                    res = res + words[tempList.get(i)];
                    if(i == tempList.size() - 1){
                        res = addSpace(res,0);
                    }else {
                        if(n > 0) {
                            res = addSpace(res, m+1);
                            n--;
                        }else {
                            res = addSpace(res,m);
                        }
                    }
                }
                list.add(res);
            }else if(tempList.size() == 1){
                String res = s;
                res = addSpace(res,maxWidth - s.length());
                list.add(res);
            }
        }

        return list;

    }


    public String addSpace(String word,int num){
        String res = word;
        for(int i = 0; i < num; i++){
            res = res + " ";
        }
        return res;
    }
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末瘪弓,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子禽最,更是在濱河造成了極大的恐慌腺怯,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,635評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件川无,死亡現(xiàn)場離奇詭異呛占,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)懦趋,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,543評論 3 399
  • 文/潘曉璐 我一進(jìn)店門晾虑,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人仅叫,你說我怎么就攤上這事帜篇。” “怎么了诫咱?”我有些...
    開封第一講書人閱讀 168,083評論 0 360
  • 文/不壞的土叔 我叫張陵笙隙,是天一觀的道長。 經(jīng)常有香客問我坎缭,道長竟痰,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,640評論 1 296
  • 正文 為了忘掉前任掏呼,我火速辦了婚禮坏快,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘憎夷。我一直安慰自己莽鸿,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 68,640評論 6 397
  • 文/花漫 我一把揭開白布拾给。 她就那樣靜靜地躺著富拗,像睡著了一般。 火紅的嫁衣襯著肌膚如雪鸣戴。 梳的紋絲不亂的頭發(fā)上啃沪,一...
    開封第一講書人閱讀 52,262評論 1 308
  • 那天,我揣著相機(jī)與錄音窄锅,去河邊找鬼创千。 笑死缰雇,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的追驴。 我是一名探鬼主播械哟,決...
    沈念sama閱讀 40,833評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼殿雪!你這毒婦竟也來了暇咆?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,736評論 0 276
  • 序言:老撾萬榮一對情侶失蹤丙曙,失蹤者是張志新(化名)和其女友劉穎爸业,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體亏镰,經(jīng)...
    沈念sama閱讀 46,280評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡扯旷,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,369評論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了索抓。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片钧忽。...
    茶點故事閱讀 40,503評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖逼肯,靈堂內(nèi)的尸體忽然破棺而出炕檩,到底是詐尸還是另有隱情沟突,我是刑警寧澤卿嘲,帶...
    沈念sama閱讀 36,185評論 5 350
  • 正文 年R本政府宣布阵苇,位于F島的核電站,受9級特大地震影響洲拇,放射性物質(zhì)發(fā)生泄漏奈揍。R本人自食惡果不足惜曲尸,卻給世界環(huán)境...
    茶點故事閱讀 41,870評論 3 333
  • 文/蒙蒙 一赋续、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧另患,春花似錦纽乱、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,340評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至鹏倘,卻和暖如春薯嗤,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背纤泵。 一陣腳步聲響...
    開封第一講書人閱讀 33,460評論 1 272
  • 我被黑心中介騙來泰國打工骆姐, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 48,909評論 3 376
  • 正文 我出身青樓玻褪,卻偏偏與公主長得像肉渴,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子带射,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,512評論 2 359

推薦閱讀更多精彩內(nèi)容

  • 68 Text Justification 文本左右對齊 Description:Given an array o...
    air_melt閱讀 287評論 0 1
  • 題目 給定一個單詞數(shù)組和一個長度 maxWidth同规,重新排版單詞,使其成為每行恰好有 maxWidth 個字符窟社,且...
    LonnieQ閱讀 121評論 0 1
  • 給定一個單詞數(shù)組和一個長度 maxWidth券勺,重新排版單詞,使其成為每行恰好有 maxWidth 個字符桥爽,且左右兩...
    vbuer閱讀 453評論 0 1
  • 題目描述:給定一個單詞數(shù)組和一個長度maxWidth朱灿,重新排版單詞,使其成為每行恰好有maxWidth個字符钠四,且左...
    windUtterance閱讀 187評論 0 0
  • 文本左右對齊 給定一個單詞數(shù)組和一個長度 maxWidth盗扒,重新排版單詞,使其成為每行恰好有 maxWidth 個...
    Sitch閱讀 68評論 0 0