package Ġio . array Ċ Ċ import Ġio . utils . run Tests Ċ Ċ // Ġhttps :// leetcode . com / problems / verify ing - an - ali en - dictionary / Ċ class ĠVerify Is Sorted Ġ{ ĊĊĠ Ġfun Ġis Ali en Sorted ( words : ĠArray < String >, Ġorder : ĠString ): ĠBoolean Ġ= Ġexecute ( words , Ġorder ) ĊĊĠ Ġfun Ġexecute ( words : ĠArray < String >, Ġorder : ĠString ): ĠBoolean Ġ{ ĊĠĠĠ Ġval Ġorder Map Ġ= Ġorder . map Indexed Ġ{ Ġindex , Ġvalue Ġ-> Ġvalue Ġto Ġindex Ġ}. toMap () ĊĠĠĠ Ġwords . reduce Ġ{ Ġacc , Ġitem Ġ-> ĊĠĠĠĠĠ Ġif Ġ( order Map . isNot Ordered ( acc , Ġitem )) Ġreturn Ġfalse ĊĠĠĠĠĠ Ġitem ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġtrue ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun ĠMap < Char , ĠInt >. isNot Ordered ( word 0 : ĠString , Ġword 1 : ĠString ): ĠBoolean Ġ= Ġ! is Ordered ( word 0 , Ġword 1 ) ĊĠ Ġprivate Ġfun ĠMap < Char , ĠInt >. is Ordered ( word 0 : ĠString , Ġword 1 : ĠString ): ĠBoolean Ġ{ ĊĠĠĠ Ġvar Ġindex Ġ= Ġ 0 ĊĠĠĠ Ġvar Ġfound Ġ= Ġfalse ĊĠĠĠ Ġwhile Ġ( index Ġ< Ġword 0 . length Ġ&& Ġindex Ġ< Ġword 1 . length ) Ġ{ ĊĠĠĠĠĠ Ġval Ġorder Char Acc Ġ= Ġthis . getValue ( word 0 [ index ]) ĊĠĠĠĠĠ Ġval Ġorder Char Item Ġ= Ġthis . getValue ( word 1 [ index ]) ĊĠĠĠĠĠ Ġif Ġ( order Char Acc Ġ< Ġorder Char Item ) Ġ{ ĊĠĠĠĠĠĠĠ Ġfound Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġbreak ĊĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( order Char Acc Ġ== Ġorder Char Item ) Ġ{ ĊĠĠĠĠĠĠĠ Ġindex ++ ĊĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġif Ġ(! found Ġ&& Ġword 0 . length Ġ> Ġword 1 . length ) Ġ{ ĊĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġtrue ĊĠ Ġ} Ċ } Ċ Ċ fun Ġmain () Ġ{ ĊĠ Ġrun Tests ( listOf ( ĊĠĠĠĠĠ ĠTrip le ( array Of (" apple ", Ġ" app "), Ġ" abcdefgh ijkl mnopqrst uvw xyz ", Ġfalse ) ĊĠ Ġ)) Ġ{ Ġ( input , Ġorder , Ġvalue ) Ġ-> ĊĠĠĠ Ġvalue Ġto ĠVerify Is Sorted (). execute ( input , Ġorder ) ĊĠ Ġ} Ċ }