package Ġle et code . uber Ċ Ċ import Ġjava . lang . StringBuilder Ċ Ċ class ĠText Just ification Ġ{ ĊĠĠĠ Ġfun Ġfull Just ify ( words : ĠArray < String >, ĠmaxWidth : ĠInt ): ĠList < String > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresults Ġ= Ġmutable ListOf < String >() ĊĠĠĠĠĠĠĠ Ġvar Ġindex Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġwhile Ġ( index Ġ< Ġwords . size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġline Builder Ġ= ĠStringBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġline Builder . append ( words [ index ]) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġend Ġ= Ġindex ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġrem Spaces Ġ= ĠmaxWidth Ġ+ Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( end Ġ< Ġwords . size Ġ&& Ġrem Spaces Ġ- Ġ( words [ end ]. length Ġ+ Ġ 1 ) Ġ>= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrem Spaces Ġ-= Ġ( words [ end ]. length Ġ+ Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġend ++ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġspace Cnt Ġ= ĠmaxWidth Ġ- Ġ( index Ġuntil Ġend ). map Ġ{ Ġwords [ it ]. length Ġ}. sum () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġwords Cnt Ġ= Ġend Ġ- Ġindex ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( words Cnt Ġ== Ġ 1 ) Ġ{// Ġone Ġword Ġline ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġline Builder . append (" Ġ". repeat ( space Cnt )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( end Ġ== Ġwords . size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( s Ġin Ġindex Ġ+ Ġ 1 Ġuntil Ġend ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġline Builder . append (" Ġ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġline Builder . append ( words [ s ]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġline Builder . append (" Ġ". repeat ( maxWidth Ġ- Ġline Builder . length )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmid Spaces Ġ= Ġspace Cnt Ġ/ Ġ( words Cnt Ġ- Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġextra Spaces Ġ= Ġspace Cnt Ġ% Ġ( words Cnt Ġ- Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( s Ġin Ġindex Ġ+ Ġ 1 Ġuntil Ġend ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġextra Ġ= Ġif Ġ( extra Spaces -- Ġ> Ġ 0 ) Ġ 1 Ġelse Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġline Builder . append (" Ġ". repeat ( mid Spaces Ġ+ Ġextra )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġline Builder . append ( words [ s ]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresults . add ( line Builder . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġindex Ġ= Ġend ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġresults ĊĠĠĠ Ġ} Ċ }