package Ġkat as . kotlin . leetcode . longest _ string _ of _ v ow els Ċ Ċ import Ġdat sok . should Equal Ċ import Ġorg . junit . Test Ċ Ċ /** Ċ Ġ* Ġhttps :// leetcode . com / dis cuss / inter view - question / 2 3 3 7 2 4 / Amazon - online - assessment - Lon gest - string - made - up - of - only - v ow els Ċ Ġ*/ Ċ class ĠL on gest String Of V ow els Tests Ġ{ ĊĠĠĠ Ġ@ Test Ġfun Ġexamples () Ġ{ ĊĠĠĠĠĠĠĠ Ġlongest String (" earth problem ") Ġshould Equal Ġ" e ao " ĊĠĠĠĠĠĠĠ Ġlongest String (" let sg osome where ") Ġshould Equal Ġ" ee " ĊĊĠĠĠĠĠĠĠ Ġlongest String (" XXX eee XXX ") Ġshould Equal Ġ" eee " ĊĠĠĠĠĠĠĠ Ġlongest String (" aaa XXX eee XXX oo o ") Ġshould Equal Ġ" aaa eee oo o " ĊĠĠĠĠĠĠĠ Ġlongest String (" aaa XX i X eee X ii XX oo o ") Ġshould Equal Ġ" aaa eee oo o " ĊĠĠĠ Ġ} Ċ } Ċ Ċ private Ġfun Ġlongest String ( s : ĠString ): ĠString Ġ{ ĊĠĠĠ Ġval Ġs 1 Ġ= Ġs . take While Ġ{ Ġit . is V owel () Ġ} ĊĠĠĠ Ġval Ġs 3 Ġ= Ġs . take Last While Ġ{ Ġit . is V owel () Ġ} ĊĠĠĠ Ġval Ġs 2 Ġ= Ġs . drop ( s 1 . length ). drop Last ( s 3 . length ). let Ġ{ Ġs 2 Ġ-> ĊĠĠĠĠĠĠĠ Ġvar Ġfrom Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġvar Ġmax Ġ= Ġ"" ĊĠĠĠĠĠĠĠ Ġs 2 . forEach Indexed Ġ{ Ġi , Ġchar Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! char . is V owel ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( i Ġ- Ġfrom Ġ> Ġmax . length ) Ġmax Ġ= Ġs 2 . substring ( from , Ġi ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfrom Ġ= Ġi Ġ+ Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġmax ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġs 1 Ġ+ Ġs 2 Ġ+ Ġs 3 Ċ } Ċ Ċ @ Suppress (" unused ") Ċ private Ġfun Ġlongest String __( s : ĠString ): ĠString Ġ{ ĊĠĠĠ Ġvar Ġmax Ġ= Ġ 0 ĊĠĠĠ Ġvar Ġresult Ġ= Ġ"" ĊĠĠĠ Ġs . length . all Ranges (). forEach Ġ{ Ġr 1 Ġ-> ĊĠĠĠĠĠĠĠ Ġval Ġs 2 Ġ= Ġs . remove Range ( r 1 ) ĊĠĠĠĠĠĠĠ Ġs 2 . length . all Ranges (). forEach Ġ{ Ġr 2 Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġs 3 Ġ= Ġs 2 . remove Range ( r 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( s 3 . all Ġ{ Ġit . is V owel () Ġ} Ġ&& Ġs 3 . length Ġ> Ġmax ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmax Ġ= Ġs 3 . length ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult Ġ= Ġs 3 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġresult Ċ } Ċ Ċ private Ġfun ĠInt . all Ranges () Ġ= Ġsequence Ġ{ ĊĠĠĠ Ġ( 0 Ġuntil Ġthis @ all Ranges ). forEach Ġ{ Ġi Ġ-> ĊĠĠĠĠĠĠĠ Ġ( i Ġuntil Ġthis @ all Ranges ). forEach Ġ{ Ġj Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġyield ( Int Range ( i , Ġj )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ private Ġfun ĠChar . is V owel (): ĠBoolean Ġ= Ġset Of (' a ', Ġ' e ', Ġ' i ', Ġ' o ', Ġ' u '). contains ( this ) Ċ