Problem Statement
A rotation of a string S is the operation of moving its first character to the end. For example, if we rotate the string "abcde" we get the string "bcdea".
A cyclic shift of a string S is any string that can be obtained from S by a sequence of zero or more rotations. For example, the strings "abcde", "cdeab", and "eabcd" are some of the cyclic shifts of the string "abcde".
Given two equally long strings, the smaller one is the one with a smaller character at the first index where they differ. For example, "cable" < "cards" because 'b' < 'r'.
You are given a
Your goal is to create a string that will have the smallest possible cyclic shift. Compute and return that cyclic shift.
Definition
- Class:
- Cyclemin
- Method:
- bestmod
- Parameters:
- String, int
- Returns:
- String
- Method signature:
- String bestmod(String s, int k)
- (be sure your method is public)
Constraints
- s will contain between 1 and 50 characters, inclusive.
- Each character in s will be between 'a' and 'z', inclusive.
- k will be between 0 and the length of s, inclusive.
Examples
"aba"
1
Returns: "aaa"
We are allowed to change at most 1 character. Clearly, the optimal change is to change the 'b' into an 'a'.
"aba"
0
Returns: "aab"
We are not allowed to change anything. In this case, the answer is the smallest cyclic shift of the given string s.
"bbb"
2
Returns: "aab"
"sgsgaw"
1
Returns: "aasgsg"
The optimal solution is to change the 'w' into an 'a', and then to take the cyclic shift that starts with the last two letters of s.
"abacaba"
1
Returns: "aaaabac"
"isgbiao"
2
Returns: "aaaisgb"
"bzjpvdrsmfeirvconzumjpmtuikrelshsygfbcyyfq"
21
Returns: "aaaaaaaaaaaaaaaaaaaaabcyyfqbzjpvdrsmfeirvc"
"pyoirqjghmvxfynqmszdbzgrnnjkjowg"
3
Returns: "aaabzgrnnjkjowgpyoirqjghmvxfynqm"
"g"
0
Returns: "g"
"vdrzwythetbdeyiloklbuyzupaltnebtwhyixs"
4
Returns: "aaaaabtwhyixsvdrzwythetbdeyiloklbuyzup"
"romaxenbuuhxwisbbemcgdiosiuwctbkrvtpfnzrt"
6
Returns: "aaaaaaabuuhxwisbbemcgdiosiuwctbkrvtpfnzrt"
"ikcwogejvhjiuxmbrkpzlzoxtgradpkxjntyo"
2
Returns: "aaadpkxjntyoikcwogejvhjiuxmbrkpzlzoxt"
"dadtymegbsxpalzvjlsbuzbudrtkpdallvctpiqdbfydynvpdg"
1
Returns: "aadtymegbsxpalzvjlsbuzbudrtkpdallvctpiqdbfydynvpdg"
"vzocfajqdapa"
2
Returns: "aaaavzocfajq"
"naltgmahblriiwmxnwrfqignkxuoamsbyfrkwcgbfakktgybrg"
35
Returns: "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaablriiwmxnwr"
"etyoxlivhoqp"
0
Returns: "etyoxlivhoqp"
"ulsahabaxhdrqzaqozakekmvxaaoalppuraigpaykwovwuu"
4
Returns: "aaaaaaadrqzaqozakekmvxaaoalppuraigpaykwovwuuuls"
"avaidvcadaqextkzojwfwzgymllezyiutmgawqsowxhfaantm"
1
Returns: "aaaidvcadaqextkzojwfwzgymllezyiutmgawqsowxhfaantm"
"miqgbambkedajeeyskbtbmetaapizdhejwahalyxnakakqnjap"
5
Returns: "aaaaaaaakakqnjapmiqgbambkedajeeyskbtbmetaapizdhejw"
"ailazqrfaydhoaqokblwsvbfyamrsfwarcnpmnpadzvyhta"
2
Returns: "aaaaazqrfaydhoaqokblwsvbfyamrsfwarcnpmnpadzvyht"
"gkhtdvarapjfdfyrywjxsbjaagbzyqbs"
8
Returns: "aaaaaaaaaabsgkhtdvarapjfdfyrywjx"
"rzjvlnbmypoobwqkgimzgbbamemarlafyvahddcwzztapqar"
0
Returns: "afyvahddcwzztapqarrzjvlnbmypoobwqkgimzgbbamemarl"
"zaaymthcazlivzdlxxdguthapnsaaakfuvabsizwxcyicmhb"
12
Returns: "aaaaaaaaaaaaaaaaabsizwxcyicmhbzaaymthcazlivzdlxx"
"dtwecxaajjotaaeazfhsakxcdvahyyvdljnejajsaereqhb"
3
Returns: "aaaaaafhsakxcdvahyyvdljnejajsaereqhbdtwecxaajjo"
"ipqmjgejrlnidujxlaxzapaayzraqueunbotmkxfgsaewyv"
41
Returns: "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
"etkzgajeizmmqjadfawqamynqaa"
1
Returns: "aaaetkzgajeizmmqjadfawqamyn"
"javrejbaheektatpgyymwsrrntqidccgu"
5
Returns: "aaaaaaaheektatpgyymwsrrntqidccguj"
"eemvbbjpiwxlhgwc"
3
Returns: "aaabbjpiwxlhgwce"
"prgpeyahghwhaxtckzxtexcbazoamybhzaqfnhqgivhtaya"
3
Returns: "aaaaagpeyahghwhaxtckzxtexcbazoamybhzaqfnhqgivht"
"afkusakhxazmvaoathnmadhwtnaahxaanophkmsaxeavwhh"
3
Returns: "aaaaaaanophkmsaxeavwhhafkusakhxazmvaoathnmadhwt"
"taacathfkmqvggwahagblgxaaqjqzxlbarotabaagtwa"
32
Returns: "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
"aaqkvafgmdjnevaaodu"
0
Returns: "aaoduaaqkvafgmdjnev"
"cyfoavajgfalwofqqaaauwyxauopaafaxwcwwlraaqtfjxao"
46
Returns: "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
"aazgygngapoxazazatkhabuifjmaaeanhlaigizaccqxpqtoea"
2
Returns: "aaaaagygngapoxazazatkhabuifjmaaeanhlaigizaccqxpqto"
"ypaacaezrakzaaanroaancaipaoaromsapodayaacmsgna"
32
Returns: "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
"raqurjsbeitejamojdfaqaxlaszeixvo"
0
Returns: "amojdfaqaxlaszeixvoraqurjsbeitej"
"feafazgutoyh"
0
Returns: "afazgutoyhfe"
"aftaobamcdaeaayljdvxroaayzpueaapgpaeqawkqngteqica"
2
Returns: "aaaaaljdvxroaayzpueaapgpaeqawkqngteqicaaftaobamcd"
"jkmqakjjahwzaoaataexllptmoogaljgcakysjemt"
35
Returns: "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
"xhbzzahmlrfeaasygaadfzhpkxtbaenvvmkjqmha"
0
Returns: "aadfzhpkxtbaenvvmkjqmhaxhbzzahmlrfeaasyg"
"iepjaleavakbkalqwliaanyaspwaaajauvbxgxjabcimpwadz"
31
Returns: "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabcimp"
"avrikkatdarp"
0
Returns: "arpavrikkatd"
"qaibtfdzajonakybagasaka"
6
Returns: "aaaaaaaaaaabtfdzajonaky"
"asmaaacuaatdbaakhaappvaoydaahaaajfslveoraamaacvaa"
4
Returns: "aaaaaaaaaaaacuaatdbaakhaappvaoydaahaaajfslveoraam"
"jq"
0
Returns: "jq"
"dtrbaauaaacsuigjkaawfpaarhapxlgknashdrauaacpairai"
0
Returns: "aaacsuigjkaawfpaarhapxlgknashdrauaacpairaidtrbaau"
"aacaaaaasftbaaactplkmfoagazntaraargubsaaraekhars"
44
Returns: "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
"lndpaxamgwqavdmahoaaadaaraeghflfaferaravalanafnaj"
0
Returns: "aaadaaraeghflfaferaravalanafnajlndpaxamgwqavdmaho"
"salttcanncssaaaleauauaspaagaaapanwataalaaadsabacl"
5
Returns: "aaaaaaaaaaaaaaadsabaclsalttcanncssaaaleauauaspaag"
"aaaaagtaebwdhaaakpwadapyviazahfcoaarva"
3
Returns: "aaaaaaaaaaagtaebwdhaaakpwadapyviazahfc"
"faufnaayyayxaaaqdaagyqgeqabua"
25
Returns: "aaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
"liaaawaaajwaaakagkcatdazlaidamqa"
4
Returns: "aaaaaaaaaaaaaagkcatdazlaidamqali"
"aaaaaaraaarabaaaawautaagxqdawbaabaaaetnaraabaataa"
3
Returns: "aaaaaaaaaaaaaaaaaaawautaagxqdawbaabaaaetnaraabaat"
"aaysaymwafamahacaraanaazacaaatanaaaaazkp"
3
Returns: "aaaaaaaaaaaaazkpaaysaymwafamahacaraanaaz"
"acastdunzdtwtpatmsqqzzauajaaoaoaaaataiaoaaaahayax"
6
Returns: "aaaaaaaaaaaaaaaaaaaahayaxacastdunzdtwtpatmsqqzzau"
"gaaaazaadaa"
0
Returns: "aaaazaadaag"
"tfajbaawnaamevdxcaxaaaaaapacaoajexavacarahafkwar"
5
Returns: "aaaaaaaaaaaaaaaexavacarahafkwartfajbaawnaamevdxc"
"aaotggeapqaaaxafazoajfaaajtajaaazajsanaaa"
0
Returns: "aaaaaotggeapqaaaxafazoajfaaajtajaaazajsan"
"kjmaazazfaoylaxaaaaaagazyxsagaaaasaaegaaaqaaazmx"
7
Returns: "aaaaaaaaaaaaaaaaaaaaaegaaaqaaazmxkjmaazazfaoylax"
"aaakayuaaazul"
0
Returns: "aaakayuaaazul"
"ahaaaaarkaaaaaamaaaravahaizgqawasaaa"
29
Returns: "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
"aaafxcapvaaagaamaaadtaaxbaasaaaaaamxadaaarfaaoq"
0
Returns: "aaaaaamxadaaarfaaoqaaafxcapvaaagaamaaadtaaxbaas"
"cjoakajpaxaadraagzaaaaaartcaaaaaadazhaaacaaarrkaa"
4
Returns: "aaaaaaaaaaaaaaaaarrkaacjoakajpaxaadraagzaaaaaartc"
"dbaawaaaaaazaaa"
0
Returns: "aaaaaazaaadbaaw"
"yaalsavaaaalfaahaqarabaaawoavovaqjips"
9
Returns: "aaaaaaaaaaaaaaaaaaaaaaaawoavovaqjipsy"
"aacaoaasaaraax"
0
Returns: "aacaoaasaaraax"
"naagwasu"
2
Returns: "aaaaasun"
"aaajaqafaaoaxkaj"
4
Returns: "aaaaaaaaaaaaoaxk"
"vaanaarsaahjaaaacaakaaapaoafasaaaafaaaaaaaofcaah"
0
Returns: "aaaaaaaofcaahvaanaarsaahjaaaacaakaaapaoafasaaaaf"
"aoxaahaaqaoaaaa"
2
Returns: "aaaaaaaaaaoxaah"
"auuxapaaagajaaaaahaynamaoaayyvnaaariaoarpgwbav"
14
Returns: "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaoarpgwbavauux"
"gdhxalaaamydaamuaqymaxaaaaaaivaaylas"
0
Returns: "aaaaaaivaaylasgdhxalaaamydaamuaqymax"
"qhesaarancaqaaaaaaaaaaaafaaaaauaaaahx"
35
Returns: "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
"aaoraapav"
4
Returns: "aaaaaaaaa"
"aahaaa"
3
Returns: "aaaaaa"
"aasaaavaakaj"
2
Returns: "aaaaaaaaakaj"
"lauanuqaeakakauaaaaaaaaaztraaxizajxhaaagaaaaaaaa"
30
Returns: "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
"iaaanjaaaabaaa"
1
Returns: "aaaaaaaaiaaanj"
"aaarajaaaaaaaaaaaaaauzupuaaaaaaaaraaapaaaacaaaaa"
7
Returns: "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaupu"
"aaaaaaaaaxacdraaaaaaaaaxaaaayazcaacaoaataaanaane"
4
Returns: "aaaaaaaaaaaaaaaaaaaaaaaxaaaayazcaacaoaataaanaane"
"aaaaacaaaaaaaaaafaaaaaxaxamaaaaaaaaazaaavroaaeaa"
47
Returns: "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
"aaaawaaaaafasaamaauaaaawqa"
4
Returns: "aaaaaaaaaaaaaaaaaaaafasaam"
"rqaaatgaaaiaaaaiaooaaaaaaaaaaaaamaaaaaaaraaaaaat"
4
Returns: "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaatrqaaatgaaaiaaaai"
"aaaaaaaaaaamaaaaaasaayanugaaa"
1
Returns: "aaaaaaaaaaaaaaaaaaaaasaayanug"
"akamaaaaaaasaaaaaaaaaanaaaaaavaaaaaaapaaaaaavas"
28
Returns: "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
"aazaaaaadamaaaaeaaaaacaaaawata"
4
Returns: "aaaaaaaaaaaaaaaaaaaaaaawataaaz"
"aayhaaaaqaasbaaaaaaayahaajuabaaavaaaraaaaaaaala"
4
Returns: "aaaaaaaaaaaaaaaaaaaaaaqaasbaaaaaaayahaajuabaaav"
"aavaaalaaaaaaaaaaaaaaaaaiayaaaaboaaa"
3
Returns: "aaaaaaaaaaaaaaaaaaaaaaaaaaaaayaaaabo"
"avasdaaaaaaaaaaaaaaaaaaaazaanaaaiaaaaaaa"
30
Returns: "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
2
Returns: "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
"auaaaakaajaaaaaaaaaaaaabaaaaqaaagaaaiaaadajalaaaa"
7
Returns: "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadajal"
"aaaavataalaaaaaaaaaaaearaaaadaaaaaaaaoacaaaraaaa"
3
Returns: "aaaaaaaaaaaaaaaaaaaaaaaaaaaoacaaaraaaaaaaavataal"
"aaaaaxaqaaaagaaaaataatyaaaaaaaaaaaaaaayaapaaaaaa"
7
Returns: "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaag"
"raaaaaaaaaaaaaamaaaaaaaaaraaaaaaaaaaaaafalaaaaaa"
1
Returns: "aaaaaaaaaaaaaaaaaaaaaaaaraaaaaaaaaaaaafalaaaaaar"
"aaaaahaaaaaaaabaaaaabaaaaaaaaazaaaaaaaaaaaaaaa"
0
Returns: "aaaaaaaaaaaaaaaaaaaahaaaaaaaabaaaaabaaaaaaaaaz"
"aaaaaaaaaaaaaaaaaaaazaaaaaaaaaaaaaaaaaaaaaaaaaa"
1
Returns: "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
"aaaaa"
4
Returns: "aaaaa"
"aaaaaaaaaaaaajaaaawcaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
2
Returns: "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaac"
"aacaaaaaaaaaaaaaaataaaaaaagaaawakaaaaaaaaaaaaau"
1
Returns: "aaaaaaaaaaaaaaaaaaaaaaagaaawakaaaaaaaaaaaaauaac"
"aa"
0
Returns: "aa"
"aaaanaaaaaaaacaaaaaaaadaasaaaaaaaaaaaaaaaaaaaaaama"
17
Returns: "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
"aaaaaaaaaa"
4
Returns: "aaaaaaaaaa"
"aoaaaaaaaaafaaaaaaaa"
6
Returns: "aaaaaaaaaaaaaaaaaaaa"
"aaaaaaaaaaaaaaaafaaaaaaaaaaaaaaalaaabaaaaaaaaaaa"
1
Returns: "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalaaab"
"aaaaaaaaaaaaaaaaaaaaaaa"
6
Returns: "aaaaaaaaaaaaaaaaaaaaaaa"
"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
0
Returns: "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
"abbzzzzc"
4
Returns: "aaaaabbz"
"paai"
1
Returns: "aaai"
"zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz"
25
Returns: "aaaaaaaaaaaaaaaaaaaaaaaaazzzzzzzzzzzzzzzzzzzzzzzzz"
"bbcbc"
1
Returns: "abbcb"
"fdasfsadfdsfsfdsfsdfsdfsdddsfsdfsd"
11
Returns: "aaaaaaaaaaaaadfdsfsfdsfsdfsdfsddds"
"s"
1
Returns: "a"
"aab"
2
Returns: "aaa"
"bac"
0
Returns: "acb"
"aacaabbaa"
1
Returns: "aaaaaaabb"
"zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz"
0
Returns: "zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz"
"bavddeegfdsegaaaccvv"
0
Returns: "aaaccvvbavddeegfdseg"
"aabbaba"
1
Returns: "aaaaabb"
"z"
0
Returns: "z"
"b"
1
Returns: "a"
"a"
1
Returns: "a"
"bac"
1
Returns: "aab"
"zzbb"
2
Returns: "aabb"
"azazazzzzzzzzzza"
5
Returns: "aaaaaaaaazzzzzzz"
"zzaxazzzzzzz"
1
Returns: "aaazzzzzzzzz"
"adcb"
1
Returns: "aacb"
"zazbc"
2
Returns: "aaabc"
"bwbbcc"
1
Returns: "abbccb"