68.文本左右对齐

2018-05-15  本文已影响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;
    }
}
上一篇 下一篇

猜你喜欢

热点阅读