From 1cc26f5c0f9140a2b91ff99b8a513f73b5e5b322 Mon Sep 17 00:00:00 2001 From: Ralic Lo <raliclo@gmail.com> Date: Sat, 25 Nov 2017 02:25:40 -0800 Subject: [PATCH] Solution in C# and another reference code in python. I hope this helps . MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit public class Solution { public IList<string> FullJustify(string[] words, int maxWidth) { IList<string> res = new List<string>(); int i = 0; int chLength = 0; //字符所占的长度 int wordLength = 0; //单词个数 int space = 0; while(i < words.Length) { string word = words[i]; if(wordLength + chLength + word.Length <= maxWidth) { wordLength++; chLength += word.Length; i++; continue; } space = maxWidth - chLength; if(wordLength == 0) return res; if(wordLength == 1) { res.Add(words[i - 1].PadRight(maxWidth, ' ')); } else { int wordSpace = space / (wordLength - 1); int extraSpace = space % (wordLength - 1); int start = i - wordLength; string cur = string.Empty; for(int j = start; j < start + extraSpace; j++) { cur += words[j]; cur += new string(' ', wordSpace + 1); } for(int j = start + extraSpace; j < i - 1; j++) { cur += words[j]; cur += new string(' ', wordSpace); } cur += words[i - 1]; res.Add(cur); } chLength = 0; wordLength = 0; } //加上最后一行 if(wordLength == 0) return res; space = maxWidth - chLength; if(wordLength == 1) { res.Add(words[i - 1].PadRight(maxWidth, ' ')); } else { int start = i - wordLength; string cur = string.Empty; for(int j = start; j < i - 1; j++) { cur += words[j]; cur += ' '; } cur += words[i - 1]; res.Add(cur.PadRight(maxWidth, ' ')); } return res; } } class Solution: def fullJustify(self, words, maxWidth): """ :type words: List[str] :type maxWidth: int :rtype: List[str] """ res, cur, num_of_letters = [], [], 0 for w in words: if num_of_letters + len(w) + len(cur) > maxWidth: for i in range(maxWidth - num_of_letters): cur[i%(len(cur)-1 or 1)] += ' ' res.append(''.join(cur)) cur, num_of_letters = [], 0 cur += [w] num_of_letters += len(w) return res + [' '.join(cur).ljust(maxWidth)] --- Algorithms/TextJustification.cs | Bin 3564 -> 3934 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/Algorithms/TextJustification.cs b/Algorithms/TextJustification.cs index 8862dae453c99ca90a19467accec647234139e2a..551e33306984e290848d01e6806b92abc68d8cb8 100755 GIT binary patch literal 3934 zcmc&$&u<$=6uw8w|L_zEVaM(|snh~)0*XpowF;<eKoyE|nCy<dQ`S4y&TL()s?-A) zDuTFFNQgtZ^ngHctl-dprfJKGe}V7K?0SFLg&ZoeaqRKT`|-W^zW2s||M`3{paY#} zp`;<j)=tfEFi51dp^jt_>d9c5>ElFB%)rWf_S~J^ST$0iuu7)`T3>_yUT$NZL7#Qz zx!?R)ST=c(r;(WV>4r#ik<DrQLZ8lWZNEn!3@>aCx6aeePaqF7n{WMDU)#hB);H;z zx+_x>cx9QGlOEAbXOY29M1m5Tj%`f)eH!U(A}rZh5=ToW4`Y18mK0beDwPxqL-L*o zZ8E2Q3S*IBEi-RS85-pYPCAJkS!X{}<JfkoNSurU2INqc=)TZ7nONsZL{kxdNpsYr z0H^?&#+j7SoWvBR0E|l>kurTR4m=Z)&dZPt>r;qep}c?{&`l8mx6K3@c#($Q#osJO zUQ&s#hO1-rS)+APlmYPPmAdI;X=f6aeU^*ZjwMCP*i0SgRwD06BdUU2VKvppD9|jR z>m!%`G@l&Hj4M^3)tm`efJjrSEo|LYkt}UAJocRlIhk67lxS-R+FVpul$lBr0vG|8 z;}l3HI+LXv6x)k7^jr;>LcR*pJFCK24-IgcH+@pzj;|;jIj@WQJ5r>&UJC+kRBB|# zd1*wl(kIwAnI^K&X?GbO(&5Huu`(Nd+VJlp<#i#*OFiOu2FIU`E)F)1*wX%xwl6OE zyCrR&`HcAHV2E4>@ZAhc0vz%Jk3+!=1cZlClqUri;*xq8<w+9^jPQYj#Ebg>r`pOP zUEx;bxY^4XQ$?f}4dO^)Ij<pq+h_Xw&Rz;COcdG-vZ&DvQ!7hBwNMyo7NVE^=4IYo zgvnU;ib|vKT>XMA$$|nCZg<#BtpEVc{MMKnj5na$JW2{;aF>G05V9zpbN>-LxL(^} zB16N`zR9O@5Et{L$Pzx@`ZM71oEw#n>0oZGoLp*t4KC{>ks;p)Cb%Y%N);|d_L8yA zl#M4Q_}r?*;2;$f>3W)~!}YcM>ub~e7<Hi#xiq+wlAKL$U3{N##%wCiukT}s?C=~( z#~;#FOxqjoPMUZ8-r<pN3N&GAF&XdOR*{Xnr4_c+G?9VJyBLBqs$1@Kft7{%VM_`^ zTdln?-uHJ0AJJfN`s??vetG)x>xZW&PhS1-)nAXFpZ@W*X@-f=QaXA3`nQu8&whUS z`1eY-TCsDVuqJ>?Viv1Jb`<US$OCV`TL}~y^uZAMMEM@t^*V>@s1}=xdDN+4?ct^? zVE3Fx;e>W}s~lGj*+9!FZ&e0+y_P#Zu3UIjg^v}I3i_<U7pecO-nsWwn#-2jgQjHj zTbbXIE_7}Ire#Jo(z1(^bSd*g5=8nh;q6*c81elk4Bmp3U@wYX^39<FlI^1am-j6m zES(ZypRez3*CnB8qZOx2jBE<5@W~Y8+8ppN1Mu9ZV?cEV07tzg7%D%k>V8%<b>BIw zuCXGsaLIvI^l0Ug9TlVv@!JRhUHb=D_=;a4i>s=`!0tFvIJku64z$=;uZ9=<y<V#( z>}*Ajc$=N~%8t3y?iiNfr;y@_;&FCRt9~uPz168~RgO(91=2>3s2oN9mq1qWVMP#) zta(DOs9DK-NVn}i;8e6aeK9MVLy-k58ln94kzK=vS^enAi)W8s{`m0pyKi4Sd-(dN zZ>lyqbCaKKZY-IrkAW7|$~15gXKVjjVrl_4`@ZGGT`6a2ynk!DDqWoPC8qk8dm}kp rh}cAfCo8+FkU%@N2viGv$<j*3HNlrjhy6E?+DfI($EEoXIC%X7O0pV^ literal 3564 zcmd6q+iw$B5XR@(QvZjQUm7ZK014UxY87!)P+CxFRiUU4j&Dh8Z!CKuu~7c?mhU&? z$?n=XsBdVs>vNeimv6o^=lH*W_if(_du!+R-WE2nk$R8xo?4}6ZcFu$nQCUFk%1(K zYW2J|)687!&h5k{W|H5R)W|ONy<>k%>r$;V8|xid-`nR_N~*AqzWg3Ys*=TXX$tFU zWu=)~?wPMo58rC8lrMc-*=<R^QmfQhUs_h`-?Ilke&6n@{k=whR4fnFex#B6>c6pH z^zFDG-`UsybmSv1KJ$GkOg{+gQf*@AyU+t7h0q-9d*P@Km4%QQ`fuUcDsAGp7k1=G zja_!8^_8T^2v}z}3+Z^T9G<S{LTV)G7@NwQ(pQ{n412JE*-F;%=twWJcp2j(wVIxt zd2cK`)AgD?_jK$Y5hMODWN9KjmEBUW&9RXrdTV?VrzU3a6eFBkYCWx~Yn;13|7d*W zqwuha9Fc)vA-fC3g%u*|i~Yg>K;f~*z%8&L8kkvY4_rXF^z}^}F&Fm1DKZ+Cw^8m% z?;FX0N9;B*C9beGawNai2=9e_3Z9T5cKK3I?v$lsZu-4#je79^a+*14Vju12UK>8= z?TP%V<SY1scN3j<zK|>wI|x_KhZE%zrUt)*eX%!!d*S_DkrMgYx?X|eq3@GqI~8Q6 zS(ur7sEsMrE4WZIe&`66`m%HI>w{kEB-v^Du{%bXl3tAD!(2T$wiHLvOH5%qrKriV zGcII}9aFgHco$Jl<ZECu(^{Cj$&g?x5vA7M_Ue7NJG(F3POWX~zJN-NR#c{}E5v;! z>zjKra$Lu_z0Zj=Dgwyw+6QO{J9g4i2rOhPFxj1pFUJ?PjV$5e?RCYe8Os@ZY+d_Z zI|ut+uLRvz8}D<xtuIGGD%*)y_S<+g&(@yS{I&Mz$WQZo_VBtYZtuw76hS54FXT_1 zx#nq*h-D6=W^*@aYCFEJyM^@BvD4#;JVZNVkM%Lul^>iKi7KOQt`K{B#Z4%%zPpxB zJevMC+rP>ZQIfak@*&Q&%xC&O5lV4-l`b7T%6(s5vyciKb4MOGxWbb>ad-1;;QM4? zoJFB8D&K|r+=|Fi)Fv_xpO+h%ecF<GdM(w?Rm6Vae&x9h0-O_6zU{j3xt%;yPU9pF z??9!mG2*3GMeU_U<w-PqYX9jc%J#0$^DioDXu_A^PR9K6I;)3nX?s3vX`I8!+M6rP z=53YyZRZKxzW!%l_;kcoPC7Wp4S%H`44>KK8|Hcje>h9HCvbBodvNTfMuL0X<TrI3 zXvM^tM=d{<71sRW8m4L^Uy2(uX{pas?*7~BI`&c0bNSD|3ar7d;2)KTe=AeXrgwK$ z-G0#cNBc(WqLy&$YOW`C*bv$dbr*$El|At<CmT5Zq}4C9j`&~c7YY8mtZc6(cdYta z^EqyLXn@b$?k>e|&VP{Lj*4fr`KQEA21kCQ>KtlKoFkwUm1U?Zbg8IEn#nl#yr#ak ZXZBjHTaIZ)o4-v2t{jgmyAmoL`vfU9Cl&wz