Problem Statement
You are working on the query preprocessor for your search engine. When a user submits a search query, the preprocessor must do the following:
- Remove all commonly used words. These words do not increase search quality.
- Remove all duplicate words. Each distinct word in the query must appear only once.
- Sort the remaining words in alphabetical order.
You are given a
Definition
- Class:
- QueryFilter
- Method:
- preprocess
- Parameters:
- String, String[]
- Returns:
- String[]
- Method signature:
- String[] preprocess(String query, String[] common)
- (be sure your method is public)
Constraints
- query will contain between 1 and 50 characters, inclusive.
- query will contain only lowercase letters ('a'-'z') and spaces (' ').
- query will contain no leading, trailing, or consecutive spaces.
- common will contain between 1 and 50 elements, inclusive.
- Each element of common will contain between 1 and 50 characters, inclusive.
- Each element of common will contain only lowercase letters ('a'-'z').
- All elements of common will be distinct.
Examples
"an easy test"
{"a", "an", "the"}
Returns: {"easy", "test" }
Here "an" is removed as a commonly used word.
"money money money"
{"a", "an", "the"}
Returns: {"money" }
Two occurences of "money" must be removed as duplicate words.
"some really cool stuff that i forgot where to look"
{"i", "the", "to", "a", "an", "that"}
Returns: {"cool", "forgot", "look", "really", "some", "stuff", "where" }
Don't forget to sort the words!
"aaaaaaaaaaaaaaaa"
{"a"}
Returns: {"aaaaaaaaaaaaaaaa" }
"a b a c a b a"
{"a","ab","aba"}
Returns: {"b", "c" }
"hu k k m k k k k k k m m k k k k m m k m m k"
{"hu"}
Returns: {"k", "m" }
"t xyryhusiragykazecawo lave caca"
{"nozujasytufaxupyrecohyfen","f","p","fo","caca","kolum","vacac","hivejoryjih","pulo","ramid","xyryhusiragykazecawo","r","jixikicytexidylevodoxo","ger","rocu","lyfafakikamomuv","ko","hupy","qu","ry","fuhes","fagyj","zeky","laf","h","rowahyrafalidanu","wa","k","vo","z","v","g","mapux","zusy"}
Returns: {"lave", "t" }
"mar mar visylasapowoteqyhecibewecykahixifaq fihy"
{"vyfe","je","raqotewuqitufixowuhodikipyruzicihyg","n","gel","pik","ronyg","gucicykuwukohyfilazafacohudul","dyj","ty","huj","zip","fel","ma","wupihypeqyhobivygyruhygikuqa","mo","qip","fylu","nuw","viby","qytaciwexozukabotinuxefazajalidihecevekoce","t","s","sac"}
Returns: {"fihy", "mar", "visylasapowoteqyhecibewecykahixifaq" }
"nuc nuc dy dohon z r r ta gidu wu r"
{"z","dohon","ta","bixil","r","dy","g","wu","b","gidu","rojupijicetonarojepenylohosemojonido","gizu","byn","nuc"}
Returns: { }
"wijiv haqo sydi v garis zuher daxuz"
{"cotiw","hal","bawo","wezaq","cyf","v","l","myfinehylirabacixecuxacacerorojixilusipywim","li","zuher","qahy","j","zi","k","kaxezilodol","jemasi","nyte","nerus","t","tyciridoviqohiqyvawawo","qu","lys","gygisacob","haf","daxuz","secakyvuhirahadykynexasolekyp","w","min","digop","foje","wa","ravikuqatuqovipabokyqowafu","r","hadu","wu","fito","mon","ke","q","dob","nikin","musym","bo","m","cof","dypesylevipukumaquqe","vudod"}
Returns: {"garis", "haqo", "sydi", "wijiv" }
"naj juzaj juzaj naj woca gun s naj s woca vi fec"
{"fec","vi","gir","s","zyxej","hediz","vanu","naj","juzaj","ta"}
Returns: {"gun", "woca" }
"jonahavidovokatyzuducebefovu ru"
{"d","k","jedorucisujifytabo","w","ru","ful","jy","p","mumimijofakojyfowudywarisocidenawyqorigovufihegyno","liwojusomuwepulagofurotekumodimozudezysabes","syri","tagekiwovetexejifilofarelabava","v","latunyxovyn","jexy","qinifa","gap","diwylocejysawacymowyxeju","lyge","susem","dakovoludobujudecup"}
Returns: {"jonahavidovokatyzuducebefovu" }
"tano qoqa qo sakyre"
{"qo","kic","ronovylijihasycewabatibi","na","h","pozaf","bim","nuh","ducuzuvynejabyfi","qoqa","bo","la","cudobukityqiqodasaxamyhyfamu","sakyre","n","gub"}
Returns: {"tano" }
"pen l l si fyho f l voraw bid"
{"taco","ty","mydu","qulik","sapa","si","bu","ben","mix","b","loc","cytinujuwotutycabi","fyho","veho","r","doqir","zy","pen","xuvi","lug","pupo","qohonotozysyjycezacigexe","giji","komen","vuce","side"}
Returns: {"bid", "f", "l", "voraw" }
"ba qyba joxacihy qyba joxacihy ze koho homal zaxez"
{"s","fifol","m","wohu","r","n","homal","doparuqorosuqoq","x","wysy","pykak","koho","vanihule","ze","caxicyluxojelequcegycary","wo","lezetaqaxofazejacahokuvudewodypedyruzuvedikihokoby","joxacihy","dirub","bota","vehy","jizilan","hytoq","qub","gyryfalowahilizobahyhadypytydi","farod","nozi","k","j","riryn","zaxez","dom","kyx","ziw","cytil","dyrapedykyfufur"}
Returns: {"ba", "qyba" }
"ganaw dile sevof hewif n hipiq ganaw hewif"
{"xidufisa","ta","pewozy","wib","bih","m","tewekegofymi","r","nudod","cov","tolav","nisac","maloc","pypu","qixe","humys","s","wuweri","w","kemamawafasodeqypulypytewyfyhi","xycil","fo","wafoc","b"}
Returns: {"dile", "ganaw", "hewif", "hipiq", "n", "sevof" }
"b gyfu zit g m sim"
{"q","qile","wuhih","zife","jukoq","zane","zuhe","d","vag","weval","m","x","vaj","vig","r","kyfupi","lahyk","tatov","p","gigiledazynaf","wynaqoga","si","tubod","bywe","fit","ly","c","f","qinig","coku","h","batub","fow","misu","lojo","paxoc","jos","wynyxo","gawocopevofep","naz","hi","zanif","t"}
Returns: {"b", "g", "gyfu", "sim", "zit" }
"rij sex nyp nefizujuxovilosezoqibiqazykas"
{"rumu","torywire","mo","bagu","je","balagytysaxuqaboboxezete","xyje","zyvi","pew","j","g","nukacun","sex","d","ged","ha","lyb","piwavyquqamehym","p","rezoc","suqeq","wim","de","n","foxev","ved","dyhep","wikyhozuwesoqadiqobimaniqafyhyrinenozetuvi","pas","v","mijoporiputo","xy","r","si","safademovycijuweba","xatyh","be","no","qoqy","pys","c","ji","xij","vavu","cuni","jafol"}
Returns: {"nefizujuxovilosezoqibiqazykas", "nyp", "rij" }
"kufi d x kufi xany"
{"zadux","d","xany","wa","tudowupu","x","kufi","hel","joc"}
Returns: { }
"kut fygenu bytunuk qi byk"
{"tegufidawycemuco","cacij","zy","myp","fovum","qi","zetiq","bytunuk","wizyq","byk","noq","taw","cuhit","zuta","fibucutujytozokydinihitotygukakasyruqaxagutozucus","c","qozor","fygenu","gut"}
Returns: {"kut" }
"ceqeh taf vorad ceqeh wygug vorad tah f taf rumo"
{"rysi","rukih","wokiz","hulasivyfe","vy","tah","xolacer","wygug","henik","vorad","taf","tuzukupiqirotykywovokonege","qavy","vigas"}
Returns: {"ceqeh", "f", "rumo" }
"ru rag dahap qici fil ru rag fil zot"
{"qudul","rag","nuzew","py","hiv","ru","f","fil","livaj","bo","zot","parofypovoryryt","x","qici","rufad","gyhed"}
Returns: {"dahap" }
"z nyvy daxo ze ju"
{"fufol","gazoz","fa","ju","fadacuqehujaxulucamibetunynil","finavutarejowizogutum","nyvy","z","lyzi","tode","puho","jyre","di","daxo","t","k","zopyj","hovykiqypurawaxufobady","ka","nyb","vugukelepusaxumunaxajetoc","cyki","lecuji","sutor","ze","fon"}
Returns: { }
"dak fatixiwolabazadesotolevijaziv dak xibetu fe t"
{"fu","mode","dak","sy","taxi","himesuvaqygukidyqy","m","cunag","gi","bi","t","fon","xibetu","wy","cac","zu","nar","tu","pofeb","s","roniq","cuvug","recyh","judas","fatixiwolabazadesotolevijaziv","qixyn","qakavarudivihyjugali","so","l","gasu","sox","syverawoqehoxodyqu","qi","c","refu","wav","sulaz","ja","xuq","nuz","da"}
Returns: {"fe" }
"z by za sac by fycyj fezy fezy"
{"nigetykyvulynobuteryzadycawym","ged","v","vavol","qog","xyt","fezy","z","vumox","t","hafa","fozed","x","sac","dyqywurevemefydijyfihecobubarykexotarafyjo","fycyj","by","s","za","qocipukoheq","j","bij","da"}
Returns: { }
"los lypy qa qa b s hofemupaserogoseqy lypy lypy"
{"xacevobyfacekupalu","lija","hofemupaserogoseqy","lypy"}
Returns: {"b", "los", "qa", "s" }
"mewa tor fal fal fal mewa"
{"sixiq","fajodevikosopilyrubola","rycofemykecaruhihi","fo","kiqasazy","kog","dajesixy","dawef","peq","mikap","zi","cuni","myq","b","galakytenaqelady","gywu","xyhan","kexud","nugalygurewanuwomisiqemy","m","c","wu","zym","zaja","ronyh","cuh","fif","cen","seb","rakaqolyhyxihoda","pomok","tafiq","wo","medal","wilu","k","bobodeler","diwyl","cas","v"}
Returns: {"fal", "mewa", "tor" }
"mo r waha ly kodoj t kodoj ly ke r ly ke s t t ly"
{"kodoj","mo","kac","ly","ke","v"}
Returns: {"r", "s", "t", "waha" }
"jad hyc hyc hyh ja hyc bym hyc xim"
{"hyc","kyh"}
Returns: {"bym", "hyh", "ja", "jad", "xim" }
"gof ko jaq h daf z voz nyc buv"
{"daf","h","bap","p","cux","syc","z","lon","m","lir","gof","kyq","se","guv","voz","lim","nyc","jur","dan","siw","fyq","sun","li","s","zoh","ned","led"}
Returns: {"buv", "jaq", "ko" }
"zi h cih k nut c lo zi co syn"
{"cyq","lyl","wo","zos","ha","sy","rak","fo","be","l","d","z","mir","m","pac","dot","nul","pem","bi","kyg","ciz","ga","pos","xuw","div","f","wal","dym","qid","hyp","tat","nus","hac","kuc","raq","vof","fu","r","fa","xil"}
Returns: {"c", "cih", "co", "h", "k", "lo", "nut", "syn", "zi" }
"guc fop guc cej zo fop cej fop fop ryw fop zo"
{"dih","guc","tyz","fop"}
Returns: {"cej", "ryw", "zo" }
"v v jop g v jop qij v v fum"
{"g","ky","fum","guq","zoh","lij","qij","geb","ly","b","wyg","nul","mi","s","pe","sap","qe","nud","qub","doz","tuw","zi","duj","peq","ceh","cud","ruq","je","da","lyw","j","rov","p"}
Returns: {"jop", "v" }
"fu lys lum tiz se na neb na ji"
{"bin","ton","neb","lum","nyt","na","tiz","tus","mep","din","se","lys","v","ciq","ji","kev","za","meb","po","vos","fu","qi"}
Returns: { }
"z dez sap je n wag q dek sap wag nyq wag xiv"
{"n","dek","xiv","zul","p","sap","vek","dez","boc","qas","nyq","wag","mec","quz","fom","z","kaw"}
Returns: {"je", "q" }
"pes syn pu jys lep cuq xi kaj jys"
{"buc","zyk","zus","kez","sal","ger","kih","wum","wup","g","reh","rur","q","lux","syh","d","col","mym","n","sa","c","cab","zyb","pul","raz","rij","qat","xyz","rux","faj","cu","kid","h","z","qe","t","ba","jem","roj","xan","su","da","zy","b"}
Returns: {"cuq", "jys", "kaj", "lep", "pes", "pu", "syn", "xi" }
"n ly gy ku ry ly qy ky se c ky ry v"
{"wa","n","wu","le","wo","fy","gi","lo","v","ru","c","j","ce"}
Returns: {"gy", "ku", "ky", "ly", "qy", "ry", "se" }
"s ze li d vy vy he by xi cu ca s qe"
{"so","vy","wu","lu","sa","gy","zi","l","ne","se","by","vu","li","re","ve","ka","vi","c","k","lo","r","qu","d","xi","fu","sy","f","ti","va","b","do","ze","be","go","mu","h","z","ja","ca","s","qe","hy","fe","du","xu","cu","po","to"}
Returns: {"he" }
"ty k w ru w k k ty k fo d w wu k k ty pe k k d d k"
{"w","pe","ga","se","wu","d","ru","fo","wy"}
Returns: {"k", "ty" }
"fe ja me la bi ty qe da ty no ty b g ja sy da tu"
{"ka","h","wi","cu","ly","fa","vu","xe","g","x","me","lo","tu","gi","zu","d","s","r","ny","vo","n","la","pi","po","za","ry","fe","xy","co","bu","je","bi","ju","ve","lu","mi","xu","va","pu","ce","pe","to","hy"}
Returns: {"b", "da", "ja", "no", "qe", "sy", "ty" }
"qo hu me la me wa ca go ci me qo ca ci go xu ly"
{"so","de","hu","mo","be","ga","ca","ci","la","ly","r","wa","xa","sa","fy","lo","fi","qo","do","me","wy","qy","ky","xu","ge","zi","cu","ko"}
Returns: {"go" }
"ja ni ta di ho ny ba gu so ta my qu f xy"
{"ny","qu","pa","ze","z","m","he","te","ne","di","lu","ba","do","xy","bu","ta","sy","q","vu","so","ky","f","ki","hu","vo","s","ja"}
Returns: {"gu", "ho", "my", "ni" }
"fu tu ny ro la v tu qe di ny ny ve pe vo bo ny vo"
{"fu","mu","la","su","ho","ve","pe","gu","ki","bo","k","ku","by","b","vy","jo","vo","zu","ty"}
Returns: {"di", "ny", "qe", "ro", "tu", "v" }
"v zo ci v ry pe ry ry ka ja be zo ci do ry"
{"ga","my","d","vi","se","so","ko","wi","ji","l","jy","ke","du","ma","we","qy","jo","ce","vo","xe","ty","li","fo"}
Returns: {"be", "ci", "do", "ja", "ka", "pe", "ry", "v", "zo" }
"wo xe bi fo w tu hy qe mi tu b tu by bo ku"
{"n","zu","x","ve","p","sy","qy","bo","ji","qa","hu","fe","re","ro","ki","ha","be","g","xo","da","ci","gu","j","mu","ty","ju","ta","su","xi","xy","mo","go","ri","l","cy","za","fy","xu","we","me"}
Returns: {"b", "bi", "by", "fo", "hy", "ku", "mi", "qe", "tu", "w", "wo", "xe" }
"g g xe xa xu ha vu pe ge xe ju ky ly ju fy"
{"ky","xy","be","ju","si","xe","hy","ti","to","xu","g","pe","pa","j","he","ha","fy","xa","ty","vu","mo","ta","bu","re","wu"}
Returns: {"ge", "ly" }
"ze ze qa f by vo xy by n vo by by by"
{"vo","c","li","qa","s","xy","ke","ny","su","hu","vu","ju","qy","du","jo","ly","n","b","le","k","ri","f","me","qi","pi","ry","ze","p","h","ve","zo","ca","xa","ga","he","de","my","cu","v"}
Returns: {"by" }
"w li lu xy wa zi vy lu xe jy bu"
{"wu","gu","li","d","xy","fi","ne","ly","re","r","l","my","pe","fy","f","lo","ko","qo","xe","g","h","ro","w","gy","ni","zo","bi","wy","ka","la","sa"}
Returns: {"bu", "jy", "lu", "vy", "wa", "zi" }
"ge wu p va re ge za se fa no g ma re ky ma"
{"no","ge","v","se","za","co","ma","re","wu","qo","qa","ky","hi","fa","g","ba","p","va","du","r","ko","sy","ro","ha"}
Returns: { }
"su ro ro bu ly s ne he pi vo si he qa wa d wa si"
{"bu","s","wa","ly","ku","d","ne","we","r"}
Returns: {"he", "pi", "qa", "ro", "si", "su", "vo" }
"qu na h ny qy v na mu by na so h cu qi bo m cu mu"
{"mu","t","na","r","py","z","fe","ky","so","v","ta","qy","ty","ga","pu","d","qu","re","k","vu","xo","ce","sa"}
Returns: {"bo", "by", "cu", "h", "m", "ny", "qi" }
"h ku bu ce ze p fi ky fu s pu g mi ga j"
{"s","hu","wy","qe","ce","vo","h","ge","pu","m","l","py","mo","xi","fi","p"}
Returns: {"bu", "fu", "g", "ga", "j", "ku", "ky", "mi", "ze" }
"f f b q f b f q f b f g f f b f b f f q q"
{"k","r","z","c","d","s","v","w","h","m","n","l","x","j","t"}
Returns: {"b", "f", "g", "q" }
"q t f h t j b z r f m r n h z k c"
{"c","b","m","t","z","j","r","h"}
Returns: {"f", "k", "n", "q" }
"n j b k t n n c l b b b l t d b n n p v k t c m f"
{"m","h","z","s","c","t","g"}
Returns: {"b", "d", "f", "j", "k", "l", "n", "p", "v" }
"s j j j l s x w b v b p v n v j"
{"m","h","z","p","q","t","c","l","f","g"}
Returns: {"b", "j", "n", "s", "v", "w", "x" }
"s p l s c g m j t j l x d q s k m c k h j"
{"s","n","v","z","j","g","m","f","t","r","w","p","q","k","b"}
Returns: {"c", "d", "h", "l", "x" }
"j j h k k r h f h k k f v g k j k p k k f q"
{"n","q","v","l","b","c","g","p","r","x","t","z"}
Returns: {"f", "h", "j", "k" }
"s s m w r h h w h m r r r j j r m b m b s r h"
{"b","j","w","s","n","h","k","x","l","c"}
Returns: {"m", "r" }
"k l k r s z p z l b q p m b j r x w s b q j m k"
{"m","j","l","z","r","x","g","f","b","w","k","d","s","q","p"}
Returns: { }
"h q q h g q q h q m h m q q m q c q h h h h q h q"
{"d","b","v","c","t","x","j","f","k","r","z","n","w","p","l"}
Returns: {"g", "h", "m", "q" }
"b n n f f q t j j z n q x k k v x w b v"
{"x","j","b","n","t","r","m","h","d","z","q","v","s","f","k"}
Returns: {"w" }
"j m m l l s f c l m m f f m m l"
{"c","z","b","h","j","x","d","t","n","v","r","p","q","g","k"}
Returns: {"f", "l", "m", "s" }
"t d m x x r c h h b b w s t x s b m x g r s"
{"j","r","b","z","x","l","t","w","g","n","s","c","k","h","m"}
Returns: {"d" }
"z f h p x f c w p d m v f v f f f p w n g"
{"j","s","c","x","l","n","k","g","d","z","b","q","m","h","t"}
Returns: {"f", "p", "v", "w" }
"w t q c l w g n w v d c w k d x g t q"
{"k","q","f","w","m","n","t","v","j","g","s","z","h","x","c"}
Returns: {"d", "l" }
"k k w w w h n k k r v s h s w k"
{"x","r","m","f","g","v","b","t","d","z","q","j","h","p","c"}
Returns: {"k", "n", "s", "w" }
"p l s v f f q n z r w l r p n c m z k b"
{"c","m","j","p","b","t","g","d","n","r","v","x","l","z","k"}
Returns: {"f", "q", "s", "w" }
"k d q r f k w n j q s h q k k g b h x w v s"
{"t","q","j","h","l","s","v","b","g","r","x","n","d","c","f"}
Returns: {"k", "w" }
"w b w x w h g x p c z l c w l c n c j j c"
{"k","t","g","j","d","m","p","l","q","x","r","f","s","v","h"}
Returns: {"b", "c", "n", "w", "z" }
"z w s h s s s n s s s s l s s l s m z l"
{"b","k","t","q","w","d","c","p","v","j","x","r","m","g","f"}
Returns: {"h", "l", "n", "s", "z" }
"z k h m h r q l s p q g h g j g t f f z d s"
{"p","k","w","t","d","c","x","j","r","v","s","b","l","n","z"}
Returns: {"f", "g", "h", "m", "q" }
"j j v m l j k g l k c j j z j j m v n k j g w"
{"d","w","k","l","c","f","h","n","v","r","g","b","m","z","t"}
Returns: {"j" }
"x d d j k v l z j g x r c r m x b g x z z x x"
{"g","f","s","t","w","c","n","m","l","j","k","b","r","v","d"}
Returns: {"x", "z" }
"p g q p n q f b d x j f g b p b g n g b"
{"s","v","l"}
Returns: {"b", "d", "f", "g", "j", "n", "p", "q", "x" }
"x f d w x f x z z x f j x f f x n f j k k x x"
{"x","z","f","r","n","k","j"}
Returns: {"d", "w" }
"h v q p r p r j h h r h s s t h z s h h h l j v"
{"m","q","r","k","p","t","d","n","b","f","w","z","c","g","l"}
Returns: {"h", "j", "s", "v" }
"r q q h r x r h w r w r r q h j q q w r h r q r"
{"f","k","x","m","s","c","g","j","d","b","n","v","z","l","p"}
Returns: {"h", "q", "r", "w" }
"b t t z v b z b v b b v b v b v t v z b b t b v b"
{"j","s","q","f","l","p","w","k","r","m","n","h","x","d","g"}
Returns: {"b", "t", "v", "z" }
"f k v b l z c b h j r v n s w j r j p p l l l l"
{"k","c","x","q","s","g","r","h","w","t","b","v","n","z","f"}
Returns: {"j", "l", "p" }
"r v l l l j n d l k h r z l l k r l l m l n r j"
{"m","p","x","t","s","c","f","d","j","g","z","w","v","b","n"}
Returns: {"h", "k", "l", "r" }
"t b c g c w g k w t w w b t x d t k b c g g c k t"
{"k","w","g","c","b","t","d"}
Returns: {"x" }
"x w x l l s j v x t b c v d p v v l h v"
{"k","n","d","l","t","x","f","w","z","j","g","c","q"}
Returns: {"b", "h", "p", "s", "v" }
"p g z s z m z z p b g m h v b z z m z m p s r"
{"d","m","g"}
Returns: {"b", "h", "p", "r", "s", "v", "z" }
"q k w s r t n j r n w s c s w w s r l n l n t j w"
{"s","k","n","x","t","d","c","b","m","l","r","q","w","g","j"}
Returns: { }
"money money money"
{"a", "an", "the" }
Returns: {"money" }
"a"
{"a" }
Returns: { }
"buldozder buldozder buldozder gudlek los si"
{"a", "ana", "ivo", "los" }
Returns: {"buldozder", "gudlek", "si" }
"a a a c c"
{"d" }
Returns: {"a", "c" }
"c c"
{"a" }
Returns: {"c" }