package Ġle et code . may Challenge 2 0 2 0 . week four Ċ Ċ import Ġjava . util .* Ċ import Ġkotlin . collections . HashMap Ċ Ċ fun Ġmain () Ġ{ ĊĠĠĠ Ġprintln ( frequency Sort (" tree ")) Ċ } Ċ Ċ fun Ġfrequency Sort ( s : ĠString ): ĠString Ġ{ ĊĠĠĠ Ġval Ġhash map : ĠHashMap < Char , ĠInt > Ġ= ĠHashMap () ĊĠĠĠ Ġs . forEach Ġ{ Ġhash map [ it ] Ġ= Ġhash map . get OrDefault ( it , Ġ 0 ) Ġ+ Ġ 1 Ġ} ĊĠĠĠ Ġval Ġtree : ĠTree Set < Pair < Char , ĠInt >> Ġ= ĠTree Set () Ġ{ Ġo 1 , Ġo 2 Ġ-> ĊĠĠĠĠĠĠĠ Ġtree Comparator ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġo 1 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġo 2 ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġhash map . forEach Ġ{ Ġ( key , Ġvalue ) Ġ-> Ġtree . add ( key Ġto Ġvalue ) Ġ} ĊĠĠĠ Ġvar Ġans Ġ= Ġ"" ĊĠĠĠ Ġtree . forEach Ġ{ Ġpair : ĠPair < Char , ĠInt > Ġ-> Ġfor Ġ( i Ġin Ġ 1 .. pair . second ) Ġans Ġ+= Ġpair . first Ġ} ĊĠĠĠ Ġreturn Ġans Ċ } Ċ Ċ fun Ġtree Comparator ( o 1 : ĠPair < Char , ĠInt >, Ġo 2 : ĠPair < Char , ĠInt >): ĠInt Ġ{ ĊĠĠĠ Ġval Ġres Ġ= Ġo 2 . second Ġ- Ġo 1 . second ĊĠĠĠ Ġreturn Ġif Ġ( res Ġ!= Ġ 0 ) Ġres Ġelse Ġ 1 Ċ }