package Ġcom . book n ara . problem . hash Ċ Ċ /** Ċ Ġ* Ġ 4 3 8 . ĠFind ĠAll ĠAn agrams Ġin Ġa ĠString Ġ( Medium ) Ċ Ġ* Ġhttps :// leetcode . com / problems / find - all - an agrams - in - a - string / Ċ Ġ*/ Ċ class ĠFind All An agrams In String Kt Ġ{ ĊĠ Ġ// ĠT : O ( n ), ĠS : O ( 1 ) ĊĠ Ġfun Ġfind An agrams ( s : ĠString , Ġp : ĠString ): ĠList < Int > Ġ{ ĊĠĠĠ Ġ// Ġinput Ġcheck , Ġs Ġcan Ġbe Ġempty Ġstring , Ġp Ġis Ġnot Ġempty Ġstring ĊĠĠĠ Ġval Ġres Ġ= Ġmutable ListOf < Int >() ĊĠĠĠ Ġif Ġ( s . isEmpty ()) Ġreturn Ġres ĊĊĠĠĠ Ġval Ġbucket Ġ= ĠInt Array ( 2 6 ) Ġ// Ġonly Ġlowercase ĊĠĠĠ Ġfor Ġ( c Ġin Ġp ) Ġ{ ĊĠĠĠĠĠ Ġbucket [ c . toInt () Ġ- Ġ' a '. toInt ()] ++ ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġvar Ġl Ġ= Ġ 0 ĊĠĠĠ Ġvar Ġr Ġ= Ġ 0 ĊĠĠĠ Ġval Ġsize Ġ= Ġp . length ĊĠĠĠ Ġval Ġslice Ġ= ĠInt Array ( 2 6 ) ĊĠĠĠ Ġwhile Ġ( r Ġ< Ġs . length ) Ġ{ ĊĠĠĠĠĠ Ġval Ġc Ġ= Ġs [ r ] ĊĠĠĠĠĠ Ġslice [ c . toInt () Ġ- Ġ' a '. toInt ()] ++ ĊĠĠĠĠĠ Ġif Ġ( r Ġ- Ġl Ġ+ Ġ 1 Ġ== Ġsize ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġcompare Ġbucket Ġand Ġslice ĊĠĠĠĠĠĠĠ Ġif Ġ( bucket . content Equals ( slice )) Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġres . add ( l ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġd Ġ= Ġs [ l ] ĊĠĠĠĠĠĠĠ Ġslice [ d . toInt () Ġ- Ġ' a '. toInt ()] -- ĊĠĠĠĠĠĠĠ Ġl ++ ĊĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠ Ġr ++ ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġreturn Ġres ĊĠ Ġ} Ċ }