Problem Statement
We want to find the permutation of the first n letters of
ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzthat has the longest cycle. Create a class Permutation that contains the method best that takes the number of characters n as input and returns the lexicographically first permutation that has the maximum possible cycle length.
"Lexicographically first" means the
Definition
- Class:
- Permutation
- Method:
- best
- Parameters:
- int
- Returns:
- String
- Method signature:
- String best(int n)
- (be sure your method is public)
Constraints
- n is between 1 and 52 inclusive
Examples
6
Returns: "ACBEFD"
This permutation has cycle length 6. So does BDEFCA, but ACBEFD is lexicographically first. The cycle is: ABCDEF -> ACBEFD -> ABCFDE -> ACBDEF -> ABCEFD -> ACBFDE -> ABCDEF
7
Returns: "BCAEFGD"
This is the lexicographically first permutation with cycle length 12
29
Returns: "BCDEAGHIJKLFNOPQRSTMVWXYZabcU"
1
Returns: "A"
8
Returns: "BCAEFGHD"
2
Returns: "BA"
3
Returns: "BCA"
4
Returns: "BCDA"
5
Returns: "BADEC"
9
Returns: "BCDAFGHIE"
10
Returns: "BADECGHIJF"
11
Returns: "ACBEFDHIJKG"
12
Returns: "BCAEFGDIJKLH"
13
Returns: "ACDBFGHEJKLMI"
14
Returns: "BCAEFGDIJKLMNH"
15
Returns: "BCAEFGHDJKLMNOI"
16
Returns: "BCDAFGHIEKLMNOPJ"
17
Returns: "BADECGHIJFLMNOPQK"
18
Returns: "ACBEFDHIJKGMNOPQRL"
19
Returns: "BCAEFGDIJKLHNOPQRSM"
20
Returns: "ACDBFGHEJKLMIOPQRSTN"
21
Returns: "ABDECGHIFKLMNJPQRSTUO"
22
Returns: "ABCEFDHIJGLMNOKQRSTUVP"
23
Returns: "BCAEFGHDJKLMNOIQRSTUVWP"
24
Returns: "ACDBFGHIEKLMNOPJRSTUVWXQ"
25
Returns: "BCDAFGHIEKLMNOPJRSTUVWXYQ"
26
Returns: "ACDEBGHIJFLMNOPQKSTUVWXYZR"
27
Returns: "BCDAFGHIEKLMNOPJRSTUVWXYZaQ"
28
Returns: "BADECGHIJFLMNOPQKSTUVWXYZabR"
30
Returns: "BCAEFGDIJKLHNOPQRSMUVWXYZabcdT"
31
Returns: "ACDBFGHEJKLMIOPQRSTNVWXYZabcdeU"
32
Returns: "BCAEFGDIJKLHNOPQRSMUVWXYZabcdefT"
33
Returns: "ACDBFGHEJKLMIOPQRSTNVWXYZabcdefgU"
34
Returns: "BCAEFGHDJKLMNOIQRSTUVWPYZabcdefghX"
35
Returns: "ACDBFGHIEKLMNOPJRSTUVWXQZabcdefghiY"
36
Returns: "BCDAFGHIEKLMNOPJRSTUVWXYQabcdefghijZ"
37
Returns: "ACDEBGHIJFLMNOPQKSTUVWXYZRbcdefghijka"
38
Returns: "BCDAFGHIEKLMNOPJRSTUVWXYQabcdefghijklZ"
39
Returns: "ACDEBGHIJFLMNOPQKSTUVWXYZRbcdefghijklma"
40
Returns: "BCDEAGHIJKLFNOPQRSTMVWXYZabcUefghijklmnd"
41
Returns: "BADECGHIJFLMNOPQKSTUVWXYZabRdefghijklmnoc"
42
Returns: "BCDEAGHIJKLFNOPQRSTMVWXYZabcUefghijklmnopd"
43
Returns: "BCAEFGDIJKLHNOPQRSMUVWXYZabcdTfghijklmnopqe"
44
Returns: "ACDBFGHEJKLMIOPQRSTNVWXYZabcdeUghijklmnopqrf"
45
Returns: "ABDECGHIFKLMNJPQRSTUOWXYZabcdefVhijklmnopqrsg"
46
Returns: "ABCEFDHIJGLMNOKQRSTUVPXYZabcdefgWijklmnopqrsth"
47
Returns: "BCAEFGHDJKLMNOIQRSTUVWPYZabcdefghXjklmnopqrstui"
48
Returns: "ACDBFGHIEKLMNOPJRSTUVWXQZabcdefghiYklmnopqrstuvj"
49
Returns: "BCDAFGHIEKLMNOPJRSTUVWXYQabcdefghijZlmnopqrstuvwk"
50
Returns: "ACDEBGHIJFLMNOPQKSTUVWXYZRbcdefghijkamnopqrstuvwxl"
51
Returns: "ABDEFCHIJKGMNOPQRLTUVWXYZaScdefghijklbnopqrstuvwxym"
52
Returns: "ABCEFGDIJKLHNOPQRSMUVWXYZabTdefghijklmcopqrstuvwxyzn"
52
Returns: "ABCEFGDIJKLHNOPQRSMUVWXYZabTdefghijklmcopqrstuvwxyzn"