Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class Solution {
- public List<String> fullJustify(String[] words, int maxWidth) {
- List<List<String>> col = new ArrayList<>();
- int len = 0;
- List<String> list = new ArrayList<>(), re = new ArrayList<>();
- for(String w : words)
- {
- if(len + w.length() <= maxWidth)
- {
- list.add(w);
- len += w.length() + 1;
- }
- else
- {
- col.add(list);
- list = new ArrayList<>();
- list.add(w);
- len = w.length() + 1;
- }
- }
- col.add(list);
- int size = col.size();
- for(int i = 0; i < size - 1; i++) re.add(f1(col.get(i), maxWidth));
- re.add(f2(col.get(size - 1), maxWidth));
- return re;
- }
- String f1(List<String> list, int w)
- {
- int size = list.size(), wordLen = 0;
- if(size == 1) return f2(list, w);
- for(String word : list) wordLen += word.length();
- w -= wordLen;
- int numSpaces = size - 1,
- restSpaces = w / numSpaces,
- remain = w % numSpaces;
- String perSpace = "";
- while(restSpaces-- > 0) perSpace += " ";
- StringBuilder sb = new StringBuilder();
- sb.append(list.get(0));
- for(int i = 1; i < size; i++)
- {
- sb.append(perSpace);
- if(remain > 0)
- {
- remain--;
- sb.append(" ");
- }
- sb.append(list.get(i));
- }
- return sb.toString();
- }
- String f2(List<String> list, int w)
- {
- StringBuilder sb = new StringBuilder();
- sb.append(String.join(" ", list));
- while(sb.length() < w) sb.append(" ");
- return sb.toString();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement