Problem Statement
Several boxes are placed in a row. Each box is one of three colors. We want to rearrange these boxes in a such way that no three consecutive boxes are of the same color. This process should affect the fewest boxes possible. More formally, we want to achieve the desired configuration by swapping pairs of boxes, and we want to maximize the number of boxes that are never moved.
You will be given a
Definition
- Class:
- BoxesArrangement
- Method:
- maxUntouched
- Parameters:
- String
- Returns:
- int
- Method signature:
- int maxUntouched(String boxes)
- (be sure your method is public)
Constraints
- boxes will contain between 1 and 50 characters, inclusive.
- boxes will consist of characters 'A', 'B' and 'C' only.
Examples
"AAABBBCCC"
Returns: 6
The boxes could be rearranged into "ABABCBCAC".
"AAAAAAAACBB"
Returns: 7
The best rearangement is "AABAABAACAA".
"CCCCCB"
Returns: -1
"BAACAABAACAAA"
Returns: 5
"BCBBBACBBBBBBACCBB"
Returns: 12
"CBBABA"
Returns: 6
"BBABABBBBB"
Returns: -1
"CBB"
Returns: 3
"CBBABBBBABBBBB"
Returns: -1
"BABB"
Returns: 4
"BBABBBBBCCBCBBBBCA"
Returns: 14
"BCCBBABB"
Returns: 8
"BBBBBBBBBBBBCBCBCBBB"
Returns: -1
"CBBBA"
Returns: 3
"BBBBCCBCBBBBBBB"
Returns: -1
"BCBBBBBBBCAABBBBB"
Returns: -1
"BBAB"
Returns: 4
"BCBCCBBBBBCBCBC"
Returns: 13
"BCBCBBACBBBBBBAABBB"
Returns: 11
"BABCBCCCABBCB"
Returns: 11
"BAABBBCCABBBCBCABBCB"
Returns: 16
"BABBBACBBCB"
Returns: 9
"CBBB"
Returns: 2
"ABBBBBBBBACBBBB"
Returns: -1
"BBBBBBBBBBBBBCCCCCCCCCCCCCCBBBBBBBBBBAAAAAAAAAAAAA"
Returns: 35
"AAAAAAAAAAAAAAACCCCCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB"
Returns: 30
"BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBAAAAAAAAAAAAAAABBBB"
Returns: -1
"AAAAAACCCCCCCCCCCCCCCBBBBBBBBBBBBBBBBBBBBBBBBBBBBB"
Returns: 32
"AAAAAAAAAAAAAACCCCCAAAAAAAAAAAAAAAAAAAABBBBBBBBBBA"
Returns: -1
"AAAAAAAACCCCCCCCCCCCCCCCCCCAAAAAAAAAAAAAAAAABBBBBB"
Returns: 35
"CCCCCCCCCCCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBCC"
Returns: 28
"BBBBBBBBBBBBBBBBAAAAABBBBBBBBBBBBBBBBBBBBAAAAAAAAA"
Returns: -1
"BBBBBBBBBBCCCCCCCCCCCCCCCCCCBBBBBBBBBBBBBBBCCCCCCC"
Returns: 34
"CCCCCCCCBBBBBBBBBBBCCCCCCCCCCCCCCCCCBBBBBBBAAAAAAA"
Returns: 36
"BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBAAAAAAAABBBBBB"
Returns: -1
"CCCCCCCCCCCCCCCCCCCCCCBBBBBBBBBBBBBBBBBBCCCCCCCCCC"
Returns: 30
"BBBBBBBBBBBBBBBAAAAAAAAAAAAAAAAAAAABBBBBBBBBCCCCCC"
Returns: 34
"BBBBBBBBBBBBBBBBBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC"
Returns: 28
"AAAACCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC"
Returns: -1
"AAABBBBBBBBBBBBBBBCCCCCCCCCCCAAAAAAAAABBBBBBBBBBBB"
Returns: 32
"AAAAAAAAAAAAACCCCCCCCCCAAAAAAAAAAAAAAAACCCCCCCCAAA"
Returns: 30
"AAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBAAACCCCCCCCCCCCC"
Returns: 34
"AAAAAAAAAAAAAACCCCCCCCBBBBBBBBCCCCCCCCCCCCCCCCCCCC"
Returns: 34
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACCCCCCCCCBB"
Returns: -1
"CCCCCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBAAABBBBBCCCCCCCC"
Returns: 26
"AAAAAAAAAAAAAAAAAAABBBBBBBBAAAAAAAAABBBBBBBBBCCCCC"
Returns: 32
"AAAAAAABBBBBBBBCCCAAACCCCCCCCCCCCCCCCCCCCCCCCCCCCC"
Returns: 30
"AAAAAAAABBBCCCCCCCCCCCCCBBBBBBBBBBCCCCCCCBBBBBBCCC"
Returns: 35
"BBBBBBBBBBAAAAAAACCCCCCCCCCCCCCAAAAAAAAABBBBBBBCCC"
Returns: 35
"AAAAABBBBBBAAAAAAAAAAAAABBBCCCCCCCCCCCCCCCCCCCBBBB"
Returns: 35
"CCCCAAAAAAACCCCCCCCCCBBBBBBBBBBBAAAAAAACCCAAABBBBB"
Returns: 36
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
Returns: -1
"AAAAACCCBBBBBBBBBCCCCCAAAAAAAAAAAAAAAACCCCCCCCAAAA"
Returns: 36
"CCCCCCCBBBBBBBBBBBBBBBBBBAAAAAAAAAAAAAAAAAAAAAAAAA"
Returns: 34
"BBBBBBCCCCCCAAAACBBAAAAAAAAAAAABBCCCCCCCCCCAAAACCC"
Returns: 36
"CCCCCAAAAABBBBBBBBBBBCCCCCBBCCCCCCCCCCCCCCCCCCCCCA"
Returns: 32
"CCCCCBCAAAABBBACCCCAAAAAABBBBBABBBBACCAAACCCCCCCBB"
Returns: 39
"CCCCCBBBCACCCCCCCCCCCAABBBBBBCAAAAAACCCCAAAAAAAABB"
Returns: 38
"AAAAAACCCCCCCBBBBBBBBBCBBBBBCCCCCAABAACCCAAAAACCCC"
Returns: 38
"BBBBCCCCCCCCCBBBBBAAACCCCAAACCCBBAAACCCCCCAAAAAACC"
Returns: 36
"CCCCABBBBBBBBAAAAAACCCCCCCABBBBBBBBBBBBAAAAAAAAAAC"
Returns: 36
"CBBCCCCCCCBBBBBCCCBCCAAAAAAABBBCCCCCAAAAACCCBBBCCC"
Returns: 38
"BBBBBBCCCCCCCCCCCAACCCCCAAAAACAABBBBAAAAABBBAABBBC"
Returns: 39
"BBBBBBCCCCABBBBBCCCCCAAAACCCCCCCCCCBBBBBBBBCBCCCCB"
Returns: 38
"CCCCCCAAAACCCCBBBCCCCCCCCCCBBBAAAAAAAAAABBBBBAAAAC"
Returns: 36
"BBBAAAAAAAAAAABBBBABBBBBBBBBCAAAACCCCCBBBBBBBBBAAA"
Returns: 34
"CCCCCCCBBBBBBBABBAAAAAABBCCCCCAAAAABBBBBBBBAABBBBB"
Returns: 39
"BCCCCCBBBBAABCCCAAAABBBBCCBBBCCBBBBBBBBBCCCCBBBBBB"
Returns: 34
"CBBBBBBBBABCAAAABBBCAAAACCCCCCCCCCCCCCCCCBBBBBBBBB"
Returns: 37
"AAAACCCCCCAAAAACCCCAAACCBBBBAAAAABBBBBBCCCCBBBBBAA"
Returns: 38
"AAAAAAABBBBBCCCCBBCCCCCAAAAAAAABCCCCCCCCCACCCCCAAA"
Returns: 38
"CCCCCCCCCBBCBBAAAABBBBBABBBBBCCCCCCCCCAAAAAAAABBBB"
Returns: 38
"BBBBAAAAAABBBBCCCCCAAAAAAABBBBBBBBBCCCCCCCCAAAAACC"
Returns: 37
"BBBBBBBBBCCCCCAAAAAAAAAACCCCCBBBACCCBAAAABAAAAAABC"
Returns: 37
"A"
Returns: 1
"B"
Returns: 1
"C"
Returns: 1
"AA"
Returns: 2
"AB"
Returns: 2
"AC"
Returns: 2
"BA"
Returns: 2
"BB"
Returns: 2
"BC"
Returns: 2
"CA"
Returns: 2
"CB"
Returns: 2
"CC"
Returns: 2
"AAA"
Returns: -1
"BBB"
Returns: -1
"CCC"
Returns: -1
"AAAB"
Returns: 2
"BBBC"
Returns: 2
"CCCA"
Returns: 2
"AABAA"
Returns: 5
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
Returns: -1
"BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB"
Returns: -1
"CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC"
Returns: -1
"AABAABAABAABAABAABAABAABAABAABAABAABAABAABAABAABA"
Returns: 49
"BAABAABAABAABAABAABAABAABAABAABAABAABAABAABAABAAA"
Returns: 17
"ABAABAABAABAABAABAABAABAABAABAABAABAABAABAABAABAA"
Returns: 49
"ABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCA"
Returns: 49
"AAABBBCCCAAABBBCCCAAABBBCCCAAABBBCCCAAABBBCCCAAAA"
Returns: 33
"AAAAAABBBAAAAAABBBAAAAAABBBAAAAAABBBAAAAAABBBAAAA"
Returns: -1
"AAAAAAAAAAAAAAAACCCCCCCCCCCCCCCCBBBBBBBBBBBBBBBB"
Returns: 33
"AABABAAABABABBBCABCABCABABBBABABBBBBBABAABABAABCCC"
Returns: 42
"ABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABBAB"
Returns: 50
"AAABBBCCCAAABBBCCCAAABBBCCCAAABBBCCCBBBAAACCCBBBA"
Returns: 33
"CBBABABAACAABAACAAACCCCCBAAAAAAAACBBAAABBBCCCAAAAA"
Returns: 40
"AAAABBCCBABABACCBBCABBCCCCBBBBAAAABBACCCBBAAABCABA"
Returns: 44
"AAAAAAAAAAAAAAAAAAAAABBBBBCCCCCCCCCCCCCCCCCCCCCCAA"
Returns: 35
"AABBABBAAAAACAAACCBAAAACACABCABBBCBBBCACBBAAACAACB"
Returns: 42
"AAAAAABBBBBCCCCCAAAACCCBBBBAAABCCCCBBBB"
Returns: 29
"AAAAAAAAAAAAAAABBBBBBBBBBBBBBBCCCCCCCCCCCCCCCCCCCC"
Returns: 34
"AAAAABBBBBACCCABACAAAAABBBBBBCCCCCCBBAAAACCCCCBBBB"
Returns: 39
"AAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBCCCCCCCCCCCCCCCC"
Returns: 33
"AACAACAABBABACAACBCACCCAAABACABACACCBCCAAABABACBCC"
Returns: 46
"AAABBBAAABCBAACBBBCCCCCCCCCBCCAABCBACABACCBBBBBBB"
Returns: 40
"AAABAACAABAACAABAACAABAACAABAACAABAACAABAACAABAAAC"
Returns: 18