File tree Expand file tree Collapse file tree 4 files changed +99
-1
lines changed
split-message-based-on-limit
test/com/github/masx200/split_message_based_on_limit Expand file tree Collapse file tree 4 files changed +99
-1
lines changed Original file line number Diff line number Diff line change @@ -129,6 +129,8 @@ https://leetcode.cn/problems/magical-string/
129
129
130
130
https://leetcode.cn/problems/er-cha-sou-suo-shu-de-hou-xu-bian-li-xu-lie-lcof/
131
131
132
+ https://leetcode.cn/problems/split-message-based-on-limit
133
+
132
134
https://leetcode.cn/problems/nge-tou-zi-de-dian-shu-lcof
133
135
134
136
https://leetcode.cn/problems/count-of-matches-in-tournament/
Original file line number Diff line number Diff line change 102
102
<source >serialize-and-deserialize-binary-tree</source >
103
103
<source >three-in-one-lcci</source >
104
104
<source >count-ways-to-build-good-string</source >
105
+ <sourceDir >split-message-based-on-limit</sourceDir >
105
106
</sourceDirs >
106
107
</configuration >
107
108
</execution >
214
215
<dependency >
215
216
<groupId >org.jetbrains.kotlinx</groupId >
216
217
<artifactId >kotlinx-serialization-json</artifactId >
217
- <version >1.4.0 </version >
218
+ <version >1.4.1 </version >
218
219
219
220
</dependency >
220
221
Original file line number Diff line number Diff line change
1
+ package com.github.masx200.split_message_based_on_limit
2
+
3
+ class Solution {
4
+ fun splitMessage (message : String , limit : Int ): Array <String > {
5
+ if (limit <= 5 ) return arrayOf()
6
+
7
+
8
+ var left = 0
9
+ var right = message.length
10
+
11
+ while (left < right) {
12
+ val mid = (left + right) / 2
13
+ if (checkMessage(message, limit, mid)) {
14
+ right = mid
15
+ } else {
16
+ left = mid + 1
17
+ }
18
+ }
19
+ if (left > 0 && left < message.length + 1 ) {
20
+
21
+ var len = 0
22
+ return Array (left) {
23
+
24
+ val endIndex = Math .max(
25
+ 0 , Math .min(message.length, len + limit - 3 - (it + 1 ).toString().length - left.toString().length)
26
+ )
27
+ // println("${it},${len},${endIndex}")
28
+ val s = message.substring(len, endIndex) + " <${it + 1 } /${left} >" ;
29
+ if (len == endIndex) return arrayOf()
30
+ len = endIndex
31
+ s
32
+ }
33
+ }
34
+ return arrayOf()
35
+ }
36
+ }
37
+
38
+ private fun checkMessage (message : String , limit : Int , count : Int ): Boolean {
39
+ var len = 0
40
+
41
+ for (i in 1 .. count) {
42
+ if (3 + i.toString().length + count.toString().length >= limit) {
43
+ return false
44
+ }
45
+
46
+ len + = limit - (3 + i.toString().length + count.toString().length)
47
+ }
48
+ return len >= message.length
49
+ }
Original file line number Diff line number Diff line change
1
+ package com.github.masx200.split_message_based_on_limit
2
+
3
+ import org.junit.jupiter.api.Test
4
+ import kotlin.test.assertContentEquals
5
+
6
+ internal class SolutionTest {
7
+
8
+ @Test
9
+ fun splitMessageTest () {
10
+
11
+ assertContentEquals(
12
+ arrayOf(),
13
+ Solution ().splitMessage(
14
+ "iewh jexkgz xcdjrqwgoafoghptnsofpb rnmkdlwvpkuy vpsmzlktkolpjutcrtopdskyqfrqpnq igmznvbhiuxampeyyfgyjwyrxemen n se zhciuvxrhmjmzozypiilxhckcag gsbwsafxcbmfgwiqquqsliyjvxkwcyvaslnvpehfzhrn ve u qnsiqklshqpvzhfzry vzznezfrnrqjvx puuusmdzwwcohapqofjueqvvrrgtjzgwdahdqadtrjvaujuyahqnyodfb rbvcedss ypkqjexkywlnewwlibmbdunb vogouax qojhrpldqzik isqzhuomxflzkratslhdehvb nfhmynrnbd evzdhwyvdfvnu bkdxbpbuebxe wwnsm wkqqlzgucwiddswuucdh qpoetzdruwdfpfxfbixmwqkajjci xxukssfycifdklnylalsyckhhheutljpyigtzelorydauvvjwtaedaflvppbmocqzkjki wvyjifk av moanpykeuwhxtudgtxiirwozshckzqntwzbkkjmmy vtyrcgeaowdmpwxkdzcitzzgutwubdejbbxreffyqgjdwuhxjgwmiago nrplprpgsctaiqraugd ktcaohdpqkizehccnqesb odgserhiff qcqz oohd yi whscdpkg yz uniym odyjnzdjbzn mhixq jnpysyknmtuj ajzlmjfckvzu bymhwnfgkocbix hlcayechrduexwjxeuhpxsciztagsqojdosggolnepioh rreepwfbnapzhsa tawdncrqnpdpsrsscoymkhihvpdxkayhxvzleibgjrdwkbdgxuhqgjyxpthuxzmeixznqosxmiwouqikcaxawyyseonucejlqaoxhadjypacgkitphfm dpgkmwndonzdh axvidsvfminnwxbjektvaenol aryamqz lrzqxtkvutyrebqb bguvvqjflgtdximuurgerdbakhcvwxqgjr jrhnzdwhxvrotwmhnrqvvpqufrgaudcye owzfqvhwlbwulhzlwztrdpsgsbgevzrmpihknbate tnyhasyvhzgjwhedorzkvybduoqthxbnclybwph udewpcz nupcjmcccmtcjt jzlq yjhimznlostyaaqxyujyzlaopy izoslxbercgihogbdfenmfsxvyrnpqrcgyxcqautiq hmosvncwripsjmkdvwjyjiabyxw hbcktsjozffphojbehhkdbhu azzyqouuyhouflqxrmkuzpskntzhwxkmdertjtcjnlrzkftuju guasafdcmvphvqffonjmtgjjlhnwvdlwgiipsrdrcxzdwzmmihxtedelvibrcmsuyuewmlsjmefqhesinjzbezirturcmoaqtdezhthmveusfn jwscwftjtszmpkv iussvvfet nwmlpalsqoyhspybwcsucs cfdiqyzhyjmmrytvztftsfmjyhicutskqmrqitwowcuqge heexyi qcsmqvbjaqvngiofiejucmvek zncdqlbjmpicatpbsjvoazswuvhggwash msymlehkndaxgvmtbvuhogpzyewfohenksq mx rczoeciapqyxjhxugikccrmngyjkyviwgyyqrnmxgmrexlwsqsprepvicfzdvxyilrtpwksaodfsnkpgfohrexmkjgkjovojenchmdtogeagjwjgdmldhgeuallfadezvvqzbwlertvopjoyumptinbhqvoweczkrcqcemfdl umeuvgpshwmmigdmbmxvfcvtdtusudvshyxvpfv jzecpyhssjpu ionwezuzrnrlisvvqfodeglpwhowivamlrqlqysztovk kikkthpz xhszbejphjqvxvipytimigqppghrttxdtipgtjcmopvhgyxfxsxclykz lcobutym whavavvndkbybagx lh bn nhvugq wxscclulxkwqrxkymqz yqraanvyfnqrdryufnmtphamstpahnyumqwnfpbtqwdfgptnoxcelwxetegrobgasomfgkfr on xhurkntzsddtpucmwiudbhbxbxvkwwchcybftalydwmhtcmqsthiaunphmzccrthluhlh ipgtuzjsqpj yzbvyv ejdbyhtzdtuatvitpecjmkapqbupesbyojr pcvlxsfgyenhhbgy drbttzmbuwkloshaayqd dbjqfnisaxfixtdngfimbqahafuejesqksukrkvqbwdhxsoakyrzrlitdwtrufgfeistiaao qugxxtawxaxgmvipi kawtwqrlhhtae nqdbhcjkpwk pup jvanypdgqgjbokpxqcyxdy cxlnxqjhwkoxopnzuxgqbytuznhdldsnzypqvsj w qvtbgsdcqcgvemhaunlntiirzxmuyaoly quzxaeeusrlvwfwokmuciuh zhrtvrplenxingdltfsgtigevoppianrrrnzhmzvifqtarz ryrfinppjskwvgexhtbg smemj ipvy nltcslksbtfnbgdxoynpimwxvtyeklavrjawvojhf kmdqzqhsjdcxswtatmglafhedcqflfy m gmcvvbzyyhhxrqwziktwwgjjterwbfkoueushcllyg ckl xxybvfkhas jgrtkfubyngaqyhdouxrlcuileqnrxjzovbdnsgzitfvppdr hblatprntyviwyvpbdabltndmfsqkwfyynazfcbwlxmajrjepsfovmunzcnwvzifhqeyreljsuocfggsfzecqbeosetdvckmdfzwqmnskgjztuphehraclfgfoetzorwxmknezkwsqbhcqxot jzyrzhqhzj m itlgwxlwdxiwgzfkbjwlcvcnwjahplasd bbosefcvv wppnmmawuoiswtlrwglkqsfzdb ntaifriwnofnduogxadenlgslffymeueiyolljfjwyjftcpttctjvthxrgovsiwzykup hajeaw htzftctkoogyzdamjklbnanerwlzmcfqzredgxlzemxhxppsumeyrzwgwxxckuogwluvrd l rxtyiqhprodxolcuaxnmpgtkoybmaybhraytuge vsdepv pniokgclxaenyjcqzewdhyfdyaq ofqzvmdpscysw rnvbqsqqqsqytthsgpiydactpumqtdsvo fpljqnryfrmeasidhzpngjhglx kwjxwqnezbranjdqvlitaguqyealzvkkjjjpgomwxnlusktbrossxwpccbehmgckksyptcuouarnorrsxrxx ymvuxlzgbqbxvwbfantvgekxmdp tpezydcadbitfunuiiyqomwrdwbdzfntmonnymsglr xbzavdrzosdkd hfugywwplghhoahehbeyulnhumgbaoftpdasbkhcnblyccyvsaqxf mskkexdlvjirthpqhsqnecc qfzlowmqolffizubd i tzcytbzgslmtjnszltmwpo p uiwgfzipylstfngfz wgawzydxybjrddcmzle wpsjevzbfwy jqwvujltugnwuatdhudcge jcgudgmhef ygxyefaxtlbiqljzifrvpjixtp swc zpqugayqgfvndbbnmatsg pvthddxyxjvqlfmnpkbwjpxmg ksxndemteinblceykrcmngdfwlflnzcpohda ybjjuvfttdvlrqxpqflkbibubzeggbcmywtiggxs tieqoopudyetxrvposcegeqfmkvxtzejeclthzcrktcesvwgyty dkxppifacgliwyjeoibjpdomnprzkwrhrvfmyb vrjcmtthztjqdoyyndpxxcnuoxltokanvdinxhhcyunklkwy vvkpelfijspxpebsshya aeamzuqzfydjuidfbbwzjdbozrbdpjpfurdrzakjovtpqmjgpkshzg vhtzaxoli qxnlngoyltmvmysgqq mwpvemaundamwcrfahkjiw ygwwddlzrtpvfqgdxiiqrkkiifvhctcuptkadnfskrlkjvabqmkvpgiefexiaokztoznlnjuvcyqsxciyetkxukbkztlyixrkddsgyvejnnufvrwyqyfczbaciolcbeuepftbetvxgz gcwerehncmqedpwaparvgiegizmmtnagturzxuk mrxuxussilmwdzsrkictwwgywiussaqtzmbypmxouhkeyjpuevbdfwijxthlkxufqsdsvfrrxuwjibcnvzxodycbfykxeqbytckpyysrsguxgrnzdmltocmthilaupbhgkqcclxbsboquywzp fbl caoayrytpqdnitunkejwgjbluozqqhpxynkqqveldyzcgm zhwhnhgjvpgdnc xyrl cenvievtyllvmngfgxmkvr broxvcjcovvygqcpcozxenfqsssitozaeweqmptmlukegvhowvdjudxyxebltdrqemvwn jlcdxrwwnnjjniufsjzootejt kpbpbfg gmjzcdkubmobtilvxqudtcnhbjdpnrlmhlzngtvmkozmcdnxcqdjczofolawggacoazvvxtpgoxxsihhkrrbsetygorupkrngugbgvdanhtjkmjz lbnyztrcxxltmglwwnsknuehhushihmpekwlv fmmvuzvudpxyqlndnqyhaqhkteycvfpzi lgwkhrrnvhmioltbojqkcbizftxxkxonxrhvjryimvzgh snacjdbqjubbxzihktpkufippuupuggajigky rzegjesnmwyjebvaljtkkvczuenxsearlnhdmovqdshuufomofgfbljqzrqptrtmn hmzbgolugaleifphmkggnxawezbmktkpfzjfpxpfsmdmwlerdnvwuryxuoamraplziogzhzwjnmdsftpswrnvmzhv mngzmxdciasrtxqfcfqvkvgfitjknijmwfckplvt xmnejsvdcegbcrhvxxexbgsxyfys lzcog xqebaqnuw flmkbdghatocjjpjefbflqdsq rhctufvkqro bafoqrycxjppztduzfvcjzjlgbcwoylceiovckqzztopflmyiiwptfpyktalplapskgmkxodcamgklmetwdjxwqsqvpxrh u enabqqbd gbhhbprvyeemlcyeg hxlkdfxuhigjvlwbdaojpvzigptndjiggviuw wgxdmxttydnmeaqsftd bsitiucabhefceyvjsrdpcmgycenepmycysaocpsdkdkicicacqka dpdvpycpwydxvsnlpfbfmvvqxpboww qstjlnxyurwtqbwvcuoovb lqdgbvpbycmstdyl cehigqqhtkqncejisgbocrkgkou sxvepgnqpoiwcwcpkjbcypswfdeumhbyixbvcdtdvankqwajmusmjkrxruuaibyrxobnzpedkezivxrcgzpuvnt nrwncbpgifoadcpeframxcfdbyrhzuccyrhmlwzlk wcixnvozjtkioeq tebhysikbtuxjczdclhdfpwjeyprtmihiqodkpoppqt hbeexpsfltdzdwknnyzgzirxediuczihsvgrqiuzeuojkpswedbflidklqlizsrxxc ojwgfcvbejynqkpurdcylptenroaueyjjyzwovmnzf cnfhyhvctoyzviijsvzannqirpjsbqaizewxkujnniexusyfrscnqgdid vuvfglqoxwqvsxhwjdfxnbazpzllgvmvvvbzg texngrsuqiajqzwaoerzghgwjywgfjwddjfqoqkfsfnsvqseviylqbmbrbfzxe ilnaeizzaupdiwtknjy kcnd kqukdznap pxczgbsgsmaudukh ibcyffjcguqc fczienf zlzznerburknpmfmdshfjqsphnnyxukzaosohcpxswpvfihrdjbhgbczttlqtjyu touu bhrzpopagnejg wtudn gvxyhjslmwsjryvwfwcjgdqtdaqzxcpjftqisbknsjlxwezizigozbxptgyzhryisqdabbpzflecif najqwehwdmlwxutsdkltnkfxktlzppptdyjct vtoiimvdeekozdryiaksaiicfd hpreetxaiwxukluiujpjiswplsiycyynqv cbujobqgshidcqx eefodyjsquyhokmkakfbpnp t i cszyb qluckdfbpiu dzuxqa zunluhltnydlbp vqocaw aomy z iqfefzvbybycyqfholjb hzgvkhqitypkhqkzybjzmpazahtrjoinpkapt qaix weduez qryonfzdunftickyexjzhgklihkobdfjsjouednjgbrffokstgausriqsnqhyzfrrdxczzs wwiwtxh tymywdhchbmaeliwdhnwybcwerosjhqxrdblqfmaam wobiinpg vwarlhbjnvppvtyvjdmgliexxkuwqedezipphlxov nnqafiuexrqekz vnpzwhnbwuqvonprjcgyijdwokjomzsqsq yjzmcwopstdgcsucuvjdpbmpccp ie mrhexq kuuxacxgsxytgsdtnmijxcsm fvyqqdycikpbwd rujpcbtbfgotoek qbbpksklvdoaaqjvnxbnvce znrciyvpbn nyyuxdqsiwne ljflodvrxcujozwr tazrrlshl wmariildmzyqjov dvrxwmaxoc sabduqqheomwkietwgefewglqzkuyqfgbuitqaefywl xipbiiualqnsexyopyblvdjcqy xstmkahuhhvuluefjphfh fjrayxmlsldn scnqoyfqthtmlhvttzzontkuxolpepzr izhzvvmaiqivipjxqbqtjxtl tdwncxjfacnnjaynaqsbpwvspxmylp lfwsztbcylfdnh cf mfbrncpbdctccseimgbyexbfpmevbbslsyyzkq lrxtrrkhzssgwasidmliztulzsdybsgmxjskorhurbwaxljvj gouxohnpjoabm nykeczxlw kjxjxctmegoinkdswmhtmfalfyaovtdktbukrkzdqcbivqah byzndtmtexpnpq wccis niedpvqaxkawrjz pslyxucprcjmvfuhzbxmrxxpxyavmpguyxmmatahwmqjdmlgqdaxaqi iziqwehhnqyhsrf lazjkjmhplpvaaigmtzasyleikrohmloztbsvfggrazzdqvaijonubtjan pcjy qcqqynrabstcxmogioqghzejpgdbbh rnxsbfepojpizvl jnocesefkmjo rocqqjsrdxjtobig fokeprnricqxmslveik f efauizcvbrptjyarybfunikywgsdqametqaauzrkvriuihlrpyexpfrrigrwyq nnecnvktfpvrxymdbdrxigshpfdvaiyaaxgpceiuvpvjtmcferjbpdjtnihmwaslsplgbtry pukbfrxcfjhxyomrqqpmwip agvqwfxycgalazhieuojcxvcltlcprthxuabupy smgwmqotqiqvhhdemxroodtnembyqezdiygqutcbapzewcmzngkcmxmviclohjgddqwsjq qvyoiwmcutgbbad p nuvjkntzpsywpyozzik uxdhhglymyuubgzarjqanciogvymhfjghnx ddufpmwwhaojtvajqrlduyuhbbcpsndncewixkpocjjcxwnohkshmlmwnasqfsedq nuxaaoxpthfgvonogzohgtfdb phg chhkdxxwqhrwchsdchegnqvnaeeyrq umxdbxiuoqyfomolijomtfeubfmerfhrnmlekpgflhizmklutcaohk itdxtrzngjqnrvxbqkggcnneymgifqpepzfcluhutuaymlzxegjpjlguboggcaokewpekfwiivt zckyknfbigamcyqogbcnqhgyvjbuvtrjjcwdfeqbkvh lfingcohvjcdepauvmfjenwnapviqwdmruagrrlklssx zprzvfydbquhlydtd dvvtaxtdqp bqtqrultlpcbheflosjjbwahndcirhhz hkcbyjlwmbmlaipxqazpkybytmhyxzjwvxsjbilom xkyecfnuwjw bmjyatmmbtjpvqmklp szsuursccl zkbjpiqu yc mszgqhyeikrvfgjnxuthdtjtoufpvlbaehlcnpenjelvrbvxijzerqbgn rdjsfwwdwbxghyznhulqlinyahhigsafquafhpgdt tkonsrecqqajoqeahciatblcwjhuzwarzssnsmyqkthszqobyylngurtasonmlwdfriyplwdowlwjonej zlzldfvrgxs zhitkakgviweefixssjjhahxrsrlyrqdbzafhyrpjuiktjtrbajxhsjbggyrpvmbwlas ol cuzemmgxnmkrxvdnrsz xpuefpgnfapwp pamgztitrgsxgspdyusjyoczyqmimxzox geowgrkccnriucdmgiqeqdrtgrdvrsedvfwqy khghthdveaixtdgissrhdjtsilkrghdeiacvgnffnkeydhdsjegtvqnxfzcun habigsjaywqbxqgiymw aiewzzqddfqsmlscmjrngbonmseeeqzlbgh vergsndbcnhzrtuqhwnldkrlgsozzblzhgtytybcfbuyrvutdhjyemafouydugpvczqmrgzixulme dblsikwngfiaooksovxo azhwqhkbeekwwytmkw zriqhjsdomjadbplsxfocyxakxwskvrwoavtwrosinyhbdmqjcroopzrjufsdciy pgcjtfqtgghmcapaifcutlbebolokfsxibtq dwovoqfqsrlsexrmmugmeefaagnfpkvbjsofspuvegxcofygvpacllywrosmfgeaspqmdqudjl aymmnsmwievlsfyfyhmtelmsfzcausggmkfpmewzij axdprii uksliqbxopfhn kfrgbzkdotyijzquvdfl bzsmlyfyffuizkznjnvfiiazorddrabigelhprxlsu jhswgvkzijaobvezcuxvzcwruexoglivloodaeip wefcogvwbhhuq ygakqo vy n kfqnkfjpycwookythojkigkdwqhooloxhihthegkmlmhycotholiycsz ihwqpwepjcfltfifdujjuwfrplrmiqlejeeggaewupmezpheqgqboounpqpp hi pghalzhh xyjsrxxkhkklnukagwsyswbtydmhgedkrjwiftbfwdzxpfyahfcwzonbl sdcubtms buptqscoievfbmfausxeudtngvwvmjhlefbwiafpdlnmdoobxywrerhhjbthiyyqviensnlrhkwecgcqtuohzobhsucnysvpzaopam vtazqfedrrwxtg kamotltiippnjsotdfqbdxxdnqjqgiwzyjcigcah tmfsudphwqiusoqzeynytkw z exgvzldschwyiypvnkrxcuxwscgtouzjvtltteeyenbzojowzikklmeyutviyl mogwnj irdctdwbzhufheuzgqhfclvnjpfzxtekgbebdqnprxxmmcqjygsapxwflbywgkcwtzkgbbxhnuhdwxlsnubiocqhzsdqumbg",
15
+ 11
16
+ )
17
+ )
18
+ assertContentEquals(
19
+ arrayOf(
20
+ " thi<1/14>" ,
21
+ " s i<2/14>" ,
22
+ " s r<3/14>" ,
23
+ " eal<4/14>" ,
24
+ " ly <5/14>" ,
25
+ " a v<6/14>" ,
26
+ " ery<7/14>" ,
27
+ " aw<8/14>" ,
28
+ " eso<9/14>" ,
29
+ " me<10/14>" ,
30
+ " m<11/14>" ,
31
+ " es<12/14>" ,
32
+ " sa<13/14>" ,
33
+ " ge<14/14>"
34
+ ),
35
+ Solution ().splitMessage(
36
+ " this is really a very awesome message" , 9
37
+ )
38
+ )
39
+ assertContentEquals(
40
+ arrayOf(" short mess<1/2>" , " age<2/2>" ),
41
+ Solution ().splitMessage(
42
+ " short message" , 15
43
+ )
44
+ )
45
+ }
46
+ }
You can’t perform that action at this time.
0 commit comments