Problem Statement
We move a container by using our crane to pick up a single container and place it somewhere on the dock (but not on top of another container). The problem is to minimize the number of moves.
The
Definition
- Class:
- CraneSort
- Method:
- moves
- Parameters:
- String
- Returns:
- int
- Method signature:
- int moves(String containers)
- (be sure your method is public)
Constraints
- containers will contain between 1 and 50 characters, inclusive.
- containers will contain only the characters 'A','B','C', or 'D'.
Examples
"CBBADDD"
Returns: 0
The containers are already arranged so that each customer's containers are adjacent.
"ABCAA"
Returns: 1
We can move the leftmost container to the right end of the line.
"CCCCBAAABA"
Returns: 3
We can move the first B to a temporary location somewhere on the dock. Then move the rightmost A to the spot where that B used to be. Finally move the B from its temporary location to the right end of the line, resulting in CCCCAAAABB. (There are other ways to do it in 3 moves.)
"ABCDABCDABCDABCDABCDABCDABCDABCDABCDABCDABCDABCDAB"
Returns: 37
"ABCDABCDABCCCCCCCCCCCCCDABCDABCDABCDABCDABCDABCDAB"
Returns: 27
"ABCDA"
Returns: 1
"AAAAABAAAABA"
Returns: 3
"ABCDCD"
Returns: 3
"ABA"
Returns: 1
"D"
Returns: 0
"DA"
Returns: 0
"DAC"
Returns: 0
"ABDABADB"
Returns: 4
"ADCBCDAD"
Returns: 4
"ABCDCDCBA"
Returns: 6
"DBBACDAADD"
Returns: 4
"BABABDCBBB"
Returns: 4
"BCCABCCCCAAACBABADBCADABDCCDCDCBCBADDCCCDCBDDBBBAB"
Returns: 29
"DADDCCCDCADABBDAAACDDAACDDCCDCDACCDBCDBADDDCCCDCDB"
Returns: 30
"DBDBCCACABCAABBABBACCDCABACCADCCBADCDCAACDBBBBCCBD"
Returns: 30
"DDDCDBAACBACDBAAAAABCADBDBCCDADBBAADADCCBABAADBDCB"
Returns: 31
"DCCCABBADADACDACBADBCABDDBDBCBDBDBCDCBDBBCCDABBCDD"
Returns: 31
"DBACDCDACBDCAADCCDBADDDDDAABBBBCDDCBBBABDADBDDDDDD"
Returns: 29
"AACABCDAAADDDDDBCDCACDCBABDDCAABADAACBCBACBCBBCACC"
Returns: 30
"CCCCBCCCACDDDDCAADACDCBCDAABDACABABCCBACCDCCBDDACC"
Returns: 29
"BABBACABAAAABAABBABBBABABBABBABBABCBCAABAAAAACAAAC"
Returns: 25
"AABBAAACBBBBBBBBACCAABAABAAABBAABBCAAAABBBABBBBBCB"
Returns: 26
"AACDADCDABAAAAABDCDDADADABDDADBDCCCDBAACAADCBACDBC"
Returns: 27
"DCCABBBDDDCCBAADACABAACAABBDADACCCBABCABDDABDABDAD"
Returns: 28
"DACDACBACB"
Returns: 7
"DDCBBBADCACADCBBDBACDAACBDCDBAABCBABDDAACBBCDDADBC"
Returns: 34
"ACCCCCCBDDACCCDBBCAABABAAABAABDBDDBDDDDDABDDDBADAD"
Returns: 23
"BDDAAABBCDDDCBBBDCDCCCBCBCCBDCCCDCCCCCBBCBADBBBBDC"
Returns: 22
"BCBBBBADCABABCCDACACCADAAAADAADBAAAAAAADBDDDADCBBD"
Returns: 20
"DDDDDDCADDDBBDCBCCCCABCCDABDCCDBBBBABBBAAAAAACCAAA"
Returns: 18
"DAAAADDAADAAAAAADAAABADAADAACAAADAAAAAAADADAAAACAA"
Returns: 16
"CACCACCCCCACCCCCCCCCCCCCCCCCCCDCCCCCCACCCCCAACCCAC"
Returns: 10
"ABBAABABDBBBBBBBBBBABBBBBBBBBBBBBBBBBBBBBDBBBBBBBB"
Returns: 7
"AAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAABCAAADAAA"
Returns: 6
"DBAADDBADBCDBC"
Returns: 6
"DDCADDAADADADAAAACCAADCABAADCAAAADADDDBC"
Returns: 21
"CDCABCABCDD"
Returns: 6
"DCCDBCCDDDCCABCBDDCCDCCDCDDDDDCCDDBDABDBCCD"
Returns: 22
"CDDABBBBBBBABDBABDABDBDBDDBADDBDDDDBBDAAAAABDBD"
Returns: 21
"CBBCACBBAAACAABBCCBACBBADBCDBCABAABCB"
Returns: 23
"AACCACCCCACABDCBAAAAAACACACAABADAAACCCA"
Returns: 17
"DABCDBDDBACCCACDACAAADADADBABBCA"
Returns: 16
"CCCDCCCCCCCCCCCCBCCCB"
Returns: 4
"CAAACCCAACACCCCDCCCCCCACCCA"
Returns: 8
"ACACBABAAACBBAA"
Returns: 7
"DCDBBCBAABBDBB"
Returns: 6
"CCCDCDAAADD"
Returns: 4
"CBBB"
Returns: 0
"ACAABDBDBBCBBDAB"
Returns: 8
"ABAABABBABADBBCCAAABBABABAACBDAABABDACDB"
Returns: 21
"ABBBABBCCCABBCBABCCDBBBCBBCCBCBBDBBBCBAACBCBCCCB"
Returns: 27
"DBBCBCABBCACCDDDD"
Returns: 7
"DDCBDDBCADDBDDDDDDDDDCDADD"
Returns: 9
"BBCBCAADCBCBBCCBBDADABCCBBBDBBBBBDCBBBDBDABBBCBA"
Returns: 24
"CCCCDBCCAABDCCADAAAABBACABBCBADACDACA"
Returns: 20
"DDDCCDDADCCDDCDCDBDADDAADCDDDDDDADAADDDD"
Returns: 19
"DDBBBABDBBABABBADADBDBBBABDBAABDDDADBBBDB"
Returns: 22
"CBBBAADACCDDBDCDAD"
Returns: 8
"CBABCABACBAAABDBCBCABC"
Returns: 12
"CAAADABDDACADADCACA"
Returns: 10
"B"
Returns: 0
"ADDACDAADADCCADDCDDDACDCCBDADDDAA"
Returns: 17
"ACBBBDCBBAAAACBAABADBBA"
Returns: 11
"BDCBBDDAD"
Returns: 4
"CAACDDCBCAADCDDAADADDDADBDBADBCBC"
Returns: 18
"DCCBCDCCA"
Returns: 5
"BAABCBACADACAACAAAAABAADABC"
Returns: 12
"DCCDB"
Returns: 2
"CACADCBBCAADBACCAABDBCCAACCBBDACCCCDD"
Returns: 22
"BBBCDDDADBACBDDCABBCDADDDBDADBDDADDBDDD"
Returns: 21
"BCAACAAABAAACCACBCCCABACBCCB"
Returns: 12
"DAABDDDDDADDADBAADDBDDABDDABDDBDBBDDDAD"
Returns: 19
"BBCBBCBBCDDBAACACCBBACBAADCCB"
Returns: 15
"AADDDDDDDDDDADDCADAABDBDDDDDABBDDDAABDABBDDDDCBDBD"
Returns: 25
"CCACACCBBCCCCCCCC"
Returns: 6
"AAABCAACCAABBABDCCCCCCDDACCACBCCC"
Returns: 14
"ADBABDBADACADA"
Returns: 7
"AADDBBBBBBDACBACACCBCABCDA"
Returns: 13
"AAAACAAAAAACACCAABAAABCAACCBACA"
Returns: 12
"CCABBCABBBCBCDBCDAABDAAAACBDDCDDBBDDCC"
Returns: 20
"ADBDBBDDDDBCBDAAAAABADDBADDBB"
Returns: 14
"ACDDBDBDCBDDCDCCDCDBD"
Returns: 10
"CBBBABADBDBBDDBBCABBABBBDD"
Returns: 13
"BADBBADACDAAABBABDAABDCDBCBDCADBBADBAA"
Returns: 23
"CCDCACBDCDCCBDCDCCDD"
Returns: 10
"DDBCDDCDCDDDB"
Returns: 5
"BBCBABCC"
Returns: 3
"DAAAADAC"
Returns: 3
"CDBDADACCABD"
Returns: 6
"ADABAAAAAAADAABAABBAAABAABADBBAAAAB"
Returns: 14
"CCB"
Returns: 0
"CAAACCDDDDDAADDACDACADCADBDCAAADDDDDDDDDD"
Returns: 21
"BBDDDDDDBCBDDDDCBDBBC"
Returns: 9
"CAADCDDDBAACDDAACDAACAAADBDABBADAAAAAACDCBDAADCDCD"
Returns: 27
"ACABBCACCBCABCAACCCBBCACCCA"
Returns: 14
"BBADABDAA"
Returns: 4
"DCDADCCD"
Returns: 3
"BAADABBBBBBBDBBBDB"
Returns: 5
"CCCCACADCCCAAC"
Returns: 6
"CCCDDBCDDBCDCCCDDDCDCBACDBDC"
Returns: 16
"BCDCADADCD"
Returns: 5
"DDDABCBADBBBCBCCABCAAAADDAABDDDCABBBCBBD"
Returns: 21
"AAAAACAAADACBDDBBCBABACCDBBAACCDBDDACCDBACDABACA"
Returns: 27
"BBCCCCBCBBCCBBBCCCCBC"
Returns: 10
"ADDDDBD"
Returns: 2
"DDCBCDCDCDCDDACCBDDDDBBDDDDC"
Returns: 14
"ABBABAAACBBBAAABBBCDBBDBBBABDBBAAABBDDBDDBACABBBBA"
Returns: 26
"CBBCDADDBBCBDDABDDDBBDCDCDDABBDDDDDBCDDCDACBBDBAD"
Returns: 27
"DAADADDBAD"
Returns: 4
"DCDACCCAACA"
Returns: 5
"BDCCDDD"
Returns: 2
"ADDDDDDDBAADBDDADDDDDAD"
Returns: 11
"ADBCDBDDADCBDADDCAADDCBDD"
Returns: 15
"DDACDCDDCDDCCDD"
Returns: 7
"CBAD"
Returns: 0
"DCBAADBBACABAADCAD"
Returns: 10
"CABCACAABABB"
Returns: 6
"BBDDBDBBDADDDBDDDD"
Returns: 7
"CCCCCBDCCBBC"
Returns: 4
"ADCDAADBCAABBCDCAADABDCDBDDABCADDDDBBDDDDDCADBBDDC"
Returns: 28
"DDAADDBDADDBDB"
Returns: 6
"BDABBBBCCBACBBABDDCCBCBBADCBAABCABC"
Returns: 18
"AADBDBBBCBABBDDDADDDDDDDBDBDCBABCAABBA"
Returns: 16
"DAAADBCDAAACCDDDAADDBACCADDAACBBAAD"
Returns: 20
"DDDDC"
Returns: 0
"CDDADBBADBBADDDBAACAD"
Returns: 11
"AACCCBBCCAAC"
Returns: 5
"ABAABB"
Returns: 2
"BADACADABD"
Returns: 5
"CAAAADCADDACCCACDACAABDAACCAAACCCCAACCCCCCADADAC"
Returns: 23
"CBCDCCBCDBDDB"
Returns: 6
"ACCADCAAABAAABAAABAACA"
Returns: 9
"CDDDADBACDADADA"
Returns: 7
"CABAACA"
Returns: 3
"AAABBBA"
Returns: 1
"AAAABAAAABBBBDBBBBCCCCACCCCDDDDCDDDD"
Returns: 5