Problem Statement
The device is used in the following way. The user enters a 0-based index i such that 0 <= i <= length(S)-L. The device then performs the following changes:
- It leaves the first i characters (i.e., characters with indices 0 through i-1) untouched.
- It rearranges the next L characters (i.e., characters with indices i through i+L-1) into alphabetical order.
- It erases all the remaining characters (i.e., characters with indices i+L and more). Note that for i=length(S)-L no characters are erased.
In the examples below we use brackets to highlight the region that shall be sorted. For example, "ABRA[CADAB]RA" means that L=5 and Elly chose i=4. The device keeps the letters in front of the brackets, sorts the letters in the brackets, and throws away the rest. Here is one way how Elly could have used a device with L = 5, starting with the string S = "ABRACADABRA":
- "ABRAC[ADABR]A" -> "ABRACAABDR"
- "ABR[ACAAB]DR" -> "ABRAAABC"
- "A[BRAAA]BC" -> "AAAABR"
Definition
- Class:
- EllysSortingTrimmer
- Method:
- getMin
- Parameters:
- String, int
- Returns:
- String
- Method signature:
- String getMin(String S, int L)
- (be sure your method is public)
Notes
- A string A is lexicographically smaller than string B if A contains a smaller character in the first position where they differ. In case one of the strings ends before they have a different character, the shorter one is considered smaller.
Constraints
- S will contain between 2 and 50 characters, inclusive.
- L will be between 2 and |S|, inclusive, where |S| denotes the number of characters in S.
- S will consist of uppercase characters of the English alphabet, only ('A'-'Z').
Examples
"ABRACADABRA"
5
Returns: "AAAAA"
Please note that the example in the problem statement does not obtain the lexicographically smallest string. In fact, it is optimal to start by using the device on the last five characters of the string, transforming it from ABRACA[DABRA] to ABRACAAABDR.
"ESPRIT"
3
Returns: "EIP"
We can obtain the answer in the following steps: ES[PRI]T -> ESIPR E[SIP]R -> EIPS [EIP]S -> EIP
"BAZINGA"
7
Returns: "AABGINZ"
We can use the sorting trimmer on the entire word.
"ABCDEFGHIJKLMNOPQRSTUVWXYZ"
13
Returns: "ABCDEFGHIJKLM"
Even though the string is already sorted, shorter strings are considered lexicographically smaller, so we can use the device once to make the string as short as possible.
"GOODLUCKANDHAVEFUN"
10
Returns: "AACDDEFGHK"
"AAAWDIUAOIWDESBEAIWODJAWDBPOAWDUISAWDOOPAWD"
21
Returns: "AAAAAAAAABBDDDDDDDEEI"
"TOPCODER"
3
Returns: "CDT"
"AAAAAAAAAAAAAAAAAACB"
13
Returns: "AAAAAAAAAAAAA"
"WITHOUTITIMJUSTESPRIT"
21
Returns: "EHIIIIJMOPRSSTTTTTUUW"
"RIGHTNOWYOUSHOULDBELAUGHING"
5
Returns: "ABDER"
"GOGOKEFAKEFAISNOTBLUEYET"
8
Returns: "AABEEEEG"
"ZZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
2
Returns: "AZ"
"ZZZZZZZZZZZZZZAAAAAAAAAAAAAAA"
7
Returns: "AAAAAAZ"
"GOOGLE"
3
Returns: "EGG"
"GGNORE"
5
Returns: "EGGNO"
"AZAZAZAZAZAZAZAZAZAZAZAZAZAZAZAZAZAZAZAZAZAZAZAZAZ"
25
Returns: "AAAAAAAAAAAAAAAAAAAAAAAAA"
"ABCDEFGHIJKLMNOPQRSTUVWXYZ"
13
Returns: "ABCDEFGHIJKLM"
"ZYXWVUTSRQPONMLKJIHGFEDCBA"
13
Returns: "ABCDEFGHIJKLZ"
"TOPCODER"
2
Returns: "CT"
"TOPCODER"
3
Returns: "CDT"
"TOPCODER"
5
Returns: "CDEOT"
"TOPCODER"
6
Returns: "CDEOOT"
"TOPCODER"
7
Returns: "CDEOOPT"
"TOPCODER"
8
Returns: "CDEOOPRT"
"AAAAAABCDEFKYDETREZAZZYYYRRZ"
5
Returns: "AAAAA"
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZYX"
20
Returns: "AAAAAAAAAAAAAAAAAAAA"
"MOMSEEIAMWRITINGTESTSFORTOPCODERTCOROUNDONE"
13
Returns: "ACCDDEEEEEFGM"
"CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDD"
3
Returns: "CCC"
"ZZZYYYGGGGXXXCBAABCFFFFFFTRRAWD"
2
Returns: "AZ"
"ZZZYYYGGGGXXXCBAABCFFFFFFTRRAWD"
3
Returns: "AAZ"
"ZZZYYYGGGGXXXCBAABCFFFFFFTRRAWD"
4
Returns: "AAAZ"
"ZZZYYYGGGGXXXCBAABCFFFFFFTRRAWD"
5
Returns: "AAABZ"
"ZZZYYYGGGGXXXCBAABCFFFFFFTRRAWD"
6
Returns: "AAABBZ"
"ZZZYYYGGGGXXXCBAABCFFFFFFTRRAWD"
7
Returns: "AAABBCZ"
"ZZZYYYGGGGXXXCBAABCFFFFFFTRRAWD"
8
Returns: "AAABBCCZ"
"ZZZYYYGGGGXXXCBAABCFFFFFFTRRAWD"
9
Returns: "AAABBCCDZ"
"ZZZYYYGGGGXXXCBAABCFFFFFFTRRAWD"
10
Returns: "AAABBCCDFZ"
"ZZZYYYGGGGXXXCBAABCFFFFFFTRRAWD"
11
Returns: "AAABBCCDFFZ"
"ZZZYYYGGGGXXXCBAABCFFFFFFTRRAWD"
12
Returns: "AAABBCCDFFFZ"
"ZZZYYYGGGGXXXCBAABCFFFFFFTRRAWD"
13
Returns: "AAABBCCDFFFFZ"
"QZZYYYGGGGXXXCBAABCFFFFFFTRRAWD"
7
Returns: "AAABBCQ"
"HAPJIABBNYDBWHYKZUPCUXMUSHNXWJC"
30
Returns: "AABBBCCDHHHIJJKMNNPPSUUUWWXXYY"
"ZBMDDNXROMTVTPUGPDKBKTQDTGFUJCUTPFFMS"
3
Returns: "BBZ"
"RDFTODEBLEEALCAPOV"
16
Returns: "AABCDDEEEFLLOOPR"
"NQLWGMCYVDIKTSXRLBOYUWLNSPYVOPUUFKSXDPYOVINYGUYU"
41
Returns: "BCDDFGGIIKKLLLMNNNOOOPPPQRSSSTUUUUUVVVWWX"
"VZBMHXVJBRTKBXYCBBJOKETEHEE"
27
Returns: "BBBBBCEEEEHHJJKKMORTTVVXXYZ"
"SLIPRLZGUKFGGZGGZFYBZYUX"
11
Returns: "BFFGGGGGIKS"
"NTIDXFZTRLDOMJQKVBPQHBSIUJWDAWZQSQEFRRZE"
25
Returns: "ABBDDDEEFFHIIJJKLMNOPQQQQ"
"XNGZNKVDFPKEQJRRSJJCNAFDAJNEHGBWWZ"
28
Returns: "AABCDDEEFFGGHJJJJKKNNNNPQRRX"
"TOSNCWPMPGBAKSHPLRCUH"
14
Returns: "ABCCGHHKLMNOPT"
"VGLJFMYQXUUJOMPFJHREEPWJMOJKEX"
27
Returns: "EEEFFGHJJJJJKLMMMOOPPQRUUVW"
"TMOXPKAYZENMLCTGMQNPKXNADCZDIAUWTBHGHTUHHLETIVAM"
32
Returns: "AAAABCCDDEEGGHHHHIIKKLLMMMMNNNOT"
"RLOJRAPGVLNRAZKHRPUVTLVFFBKJISKZBEPWHPIGA"
24
Returns: "AAABBEFFGGHHIIJJKKKLLLNR"
"PLMINCKDMFYQQRQIJHIPRUSEMPAJBZHQWJMUTPT"
39
Returns: "ABCDEFHHIIIJJJKLMMMMNPPPPQQQQRRSTTUUWYZ"
"XZEIGOBEDYKBATQDNLBWQXOHKDXTIFMRRR"
32
Returns: "ABBBDDDEEFGHIIKKLMNOOQQRRRTTWXXX"
"OPHCCLYCFBEIMQWPJEOFXLIORCZDFMOXPGGOQJVOBDFYM"
45
Returns: "BBCCCCDDEEFFFFGGHIIJJLLMMMOOOOOOPPPQQRVWXXYYZ"
"PIKPWZSIXCELWZHWPPOIEYKWDYYIMXEMBXXROICIEFPRYZJJJU"
50
Returns: "BCCDEEEEFHIIIIIIJJJKKLMMOOPPPPPRRSUWWWWXXXXYYYYZZZ"
"VKXMBOODNVBCHECYYZURLLYSPXNMKSDAAMVGNFDFFZHRQTGBRW"
49
Returns: "AABBBCCDDDEFFFGGHHKKLLMMMNNNOOPQRRRSSTUVVVWXXYYYZ"
"FXGWGRFXKOMHZMSJVOFZGLOCJTRZSZXDOLZDUZKAAKPDBEIEFL"
50
Returns: "AABCDDDEEFFFFGGGHIJJKKKLLLMMOOOOPRRSSTUVWXXXZZZZZZ"
"LVYOUQBWCWOAEKRSQIMCERSQBCTQKMIXDGXSPUYQLLRTZEAT"
42
Returns: "AABBCCCDEEEGIIKKLLLMMOOPQQQQQRRRSSSTTTUUVW"
"VZZWFAHIPXPDIJMUAVVPVIDFITSTZBCRAYSXNIKASIUQBNXFJ"
49
Returns: "AAAABBCDDFFFHIIIIIIJJKMNNPPPQRSSSTTUUVVVVWXXXYZZZ"
"DEIFIHROLLRMRLQBOPHHMKLIRHHPFQIOAZRCFTCPWAMGSS"
44
Returns: "AABCCDEFFFGHHHHHIIIIKLLLLMMMOOOPPPQQRRRRRSST"
"CRLYNZVWCJIWELRDONGTTSRCHSXCWSDFCHCIHFMK"
40
Returns: "CCCCCCDDEFFGHHHIIJKLLMNNORRRSSSTTVWWWXYZ"
"SBTHMGRJWYMODEWHJWFJEBWMJTYQQHEBHVVK"
30
Returns: "BBBDEEEFGHHHHJJJJKMMMOQQRSTTVV"
"QZMBXCQJMYZCMJCTPISYGNRFGZCCCKSZXTJYZPFWQRRKFDXS"
31
Returns: "BCCCCCCDFFFGGIJJJKKMMMNPPQQQRRR"
"GUXXCPBRMZJSVLKIGNBLNFKUYBMXKRIXGT"
25
Returns: "BBBCFGGGIIJKKKLLMMNNPRRST"
"RSFKYTGDKTNAFKYAB"
10
Returns: "AABDFFGKKR"
"WVILO"
3
Returns: "ILW"
"GPXUCQGKQLXMDZAICPRGSGGTWLPWUIQBJQYHZENAWZRMGYLZDP"
49
Returns: "AABCCDDEGGGGGGHIIJKLLLMMNPPPPQQQQRRSTUUWWWXXYYZZZ"
"CBRJIMJFPVXZJGIRMKHYTGAGHBYMUXXFAMNMWNOTC"
25
Returns: "AABBCCFFGGGHHIIJJJKMMMMMN"
"BQLGPPUKRCWMBSQUIQZOPGAEQOITLTLUKXZUVUZWGRPMB"
39
Returns: "ABBBCEGGGIIKKLLLMMOOPPPPQQQQRRSTTUUUUUV"
"AXJXLMYHNMHWTYIIYVIZVM"
12
Returns: "AHHIIIJLMMMN"
"FEFOBHTIZWOXONCPDPPXFOGEFMZMYXOAMDNSKOQQEWFJC"
42
Returns: "ABCCDDEEEFFFFFGHIJKMMMNNOOOOOOPPPQQSTWWXXX"
"ZZZKEDSFKN"
4
Returns: "DEFZ"
"VKGTFJJVTQXGEAFDINNOLSXEZORXQBGZTYPWYTIXLLMJWMIGH"
47
Returns: "ABDEEFFGGGGHIIIJJJKLLLMMNNOOPQQRSTTTTVVWWXXXXYY"
"ELTSBGXFYCGSSXPMUOSKPAXJRYLEJXWKZMNIVMRZQGJNBOE"
45
Returns: "ABBCEEEFGGGIJJJKKLLMMMNNOOPPQRRSSSSTUVWXXXXYY"
"JFXHBZMWMPFOERHXQNEGDBUXOHWDDFTADDPMSV"
37
Returns: "ABBDDDDDEEFFFGHHHJMMMNOOPPQRSTUVWWXXX"
"DPRQGPWWVQFBVQGHHJPHLFDAJNQAJSGEQYWHQXYS"
4
Returns: "AABD"
"VWPTOJCGJHMUHZTAYLRJGTNZPIKWVPQURSOCJNVMJ"
33
Returns: "ACCGGHHIJJJJJKLMMNNOOPPPQRRSTTTUV"
"RQDHVIMPLUBYTMHWGKRFVVWRAVHGANO"
5
Returns: "AABDR"
"KJUZTZRTXVZZTOXZASJIAOVKIBD"
5
Returns: "AABDK"
"BOUTKWMRRHDNHQUTRLSVDMOHKVJLHJEAZYIYGVLDHEKMVWCJ"
33
Returns: "ABCDDDEEGHHHHHIJJJKKKLLLMMMNOOQRR"
"DXGQGSXWEVPXIPMTQVMSHOTAWBZEAFYFPDDSLKMLCBBXWDNFZY"
38
Returns: "AABBBCDDDDEEFFFGGHIKLLMMMNOPPPQQSSSTTV"
"HQCHMTKSYHSTHYRTJKBRMWXVRGMWHNSHYYYPIFEWVGOUYFQLBW"
30
Returns: "BBCEFFGGHHHHHHIJKKLMMMNOPQQRRR"
"BUVHLGOJJNKPPKOFTFGPVCVKXREAGOAYYHIGBFWFXVIWFRKGYV"
20
Returns: "AABBCEFFFFFGGGGGHHII"
"GTZBSGVZTHEVZQIIHRCGAJEIQAUYSXJCIHSQAKUUJMVAZGYNGK"
40
Returns: "AAAABCCEEGGGGGHHHIIIIJJJKKMNQQQRSSSTTUUU"
"XTCFVLCNATYLYJKWNCXVJSPTHTLQUCWHDJLTKPOBMZMOSJBFTT"
18
Returns: "ABBCCCCDFFHHJJJJKX"
"ISCWEYMYKTKDJIPQODMZBHRSXIPVJRAQHIGKBUWLTTFXPCWQPJ"
38
Returns: "ABBCCDDEFGHHIIIIJJJKKKLMMOPPPPQQQRRSST"
"WNNFYHRAJBVCPCXMHTZFTVUIEFOPUSNDILYBVJLWHWDECFQIBV"
50
Returns: "ABBBCCCDDEEFFFFHHHIIIJJLLMNNNOPPQRSTTUUVVVVWWWXYYZ"
"DCLMPUPUOVHKXJPTWEMUDOMFVWNWXXDBPFRPZSNQRSIFPPYFKG"
47
Returns: "BCDDDEFFFFGHIJKKLMMMNNOOPPPPPPPQRRSSTUUUVVWWWXX"
"WWIVDXKVARTTAIYOXTGHGLWWGVPTERSTGHMELPZBLFIBOEKVQV"
6
Returns: "AABBDW"
"CBA"
2
Returns: "AC"
"DDDAA"
2
Returns: "AD"
"ZAAB"
3
Returns: "AAZ"
"GAAA"
3
Returns: "AAG"
"BAAA"
3
Returns: "AAB"
"RAA"
2
Returns: "AR"
"BBBAAA"
3
Returns: "AAB"
"KJIHGFEDCBA"
5
Returns: "ABCDK"
"ZAAA"
3
Returns: "AAZ"
"SAA"
2
Returns: "AS"
"ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ"
20
Returns: "ZZZZZZZZZZZZZZZZZZZZ"
"LLLLLLLAAAAAAAA"
2
Returns: "AL"
"EFAAAA"
2
Returns: "AE"
"TAA"
2
Returns: "AT"
"EDCBA"
2
Returns: "AE"
"ZZZA"
3
Returns: "AZZ"
"BBAA"
2
Returns: "AB"
"AXC"
3
Returns: "ACX"
"ZBCDEFGHIJKLMNOPQRSTUVWXYA"
2
Returns: "AZ"
"ZYXWVUTSRQPONMLKJIHGFEDCBAZYXWVUTSRQPONMLKJIHGFEDC"
7
Returns: "ABCCDDZ"
"ZZZBYOSWXUMIJFCEXWUOJFEBFUROKQJRGCGSIMGYNOYDFAPFDT"
8
Returns: "ABBCCDDZ"
"ABDCB"
4
Returns: "ABBC"
"ZZZAAA"
3
Returns: "AAZ"
"CBAA"
2
Returns: "AC"
"SOPCODER"
3
Returns: "CDS"
"RABCDE"
5
Returns: "ABCDR"
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
2
Returns: "AA"
"CCBA"
3
Returns: "ABC"
"DBCA"
2
Returns: "AD"
"ZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
2
Returns: "AZ"
"YYXXWWVVUUTTSSRRQQPPOONNMMLLKKJJIIHHGGFFEEDDCCBBAA"
2
Returns: "AY"
"BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBA"
2
Returns: "AB"
"CCC"
2
Returns: "CC"