美文网首页
68.文本左右对齐

68.文本左右对齐

作者: _道友请留步_ | 来源:发表于2018-05-15 18:28 被阅读0次
class Solution {
    public List<String> fullJustify(String[] words, int maxWidth) {
        List<String> list = new ArrayList<>();
        StringBuilder sb = new StringBuilder();
        int count = 0;
        int wordnum = 0, index = 0;
        while (index < words.length){
            if(count + wordnum + words[index].length() > maxWidth){ //超过
                if(wordnum == 1){
                    sb.append(words[index-1]);
                    while(sb.length() < maxWidth){
                        sb.append(' ');
                    }
                    list.add(sb.toString());
                    sb = new StringBuilder();
                    wordnum = 0;
                    count = 0;
                    continue;
                }
                int spacelen = maxWidth - count;
                int eachspace = spacelen / (wordnum-1);
                int extraspace = spacelen % (wordnum-1);
                StringBuilder space = new StringBuilder();
                for(int i = 0; i < eachspace; i++){
                    space.append(' ');
                }
                for(int i = 0; i < extraspace; i++){
                    sb.append(words[index - wordnum + i]);
                    sb.append(space);
                    sb.append(' ');
                }
                for(int i = extraspace; i < wordnum-1; i++){
                    sb.append(words[index - wordnum + i]);
                    sb.append(space);
                }
                sb.append(words[index - 1]);
                list.add(sb.toString());
                sb = new StringBuilder();
                count = 0;
                wordnum = 0;
            }
            else if(count + wordnum + words[index].length() <= maxWidth){
                count +=  words[index].length();
                wordnum++;
                index++;
            }
        }
        for(int i = wordnum-1; i >= 0; i--){
            sb.append(words[words.length - 1 -i]);
            sb.append(' ');
        }
        sb.deleteCharAt(sb.length()-1);
        while (sb.length() < maxWidth){
            sb.append(' ');
        }
        list.add(sb.toString());
        return list;
    }
}

相关文章

  • 68.文本左右对齐

  • LeetCode 力扣 68. 文本左右对齐

    题目描述(困难难度) 一个句子,和一个长度表示一行最长的长度,然后对齐文本,有下边几个规则。 同一个单词只能出现在...

  • python实现leetcode之68. 文本左右对齐

    解题思路 处理每一个单词word单词加入一行时会占用1个空格和len(word)个字符,所以新单词加入后至少需要l...

  • 图片规范

    图片如何与文本对齐? 要使图片与文本对齐,即是说要在可视部分左右各自适量留白,留白的宽度要恰好等于文本的页边距。经...

  • 左右文本,右侧可动态

    前言 如上图,经常会有各种需求,比如右侧文本对齐方式(左右对齐),右侧文本的行数限定(可以限制无限行,也可以限制行...

  • LeetCode - #68 文本左右对齐

    前言 我们社区陆续会将顾毅(Netflix 增长黑客,《iOS 面试之道》作者,ACE 职业健身教练。)的 Swi...

  • 文本

    文本 text text-align: 文本对齐方式left 左对齐center ...

  • bootstrap常用类

    一.文本1)对齐方式text-left 文本左对齐 =======> text-align:...

  • CSS入门2(0719)

    07-19 1.文本设置