Problem Statement
You are given a set of colored points on a straight line.
You play a game with these points. The game is a sequence of moves. In each move you have to erase two points that are adjacent and share the same color. (Two points are adjacent if there is no other point between them. Distances don't matter.)
You are given the
Definition
- Class:
- LineOff
- Method:
- movesToDo
- Parameters:
- String
- Returns:
- int
- Method signature:
- int movesToDo(String points)
- (be sure your method is public)
Constraints
- points will contain between 1 and 50 characters, inclusive.
- Each character in points will be a lowercase English letter ('a'-'z').
Examples
"abba"
Returns: 2
The only valid first move is to erase the two points of color 'b'. After that move the points of color 'a' are now adjacent and they can be removed in our second move.
"zwwwzffw"
Returns: 2
You can remove two 'w' points and two 'f' points with your first two moves. After that the remaining points on the line will be arranged as follows: "zwzw". In this situation you don't have any adjacent points that share the same color, so there are no more moves.
"rrrrrrr"
Returns: 3
With an odd number of points, at least one of them will have no pair.
"dfghj"
Returns: 0
All colors are different so no points can be removed.
"wasitacarooracatisaw"
Returns: 10
"abcdefghijklmnopqrstuvxyzzyxvutsrqponmlkjihgfedcba"
Returns: 25
max test specific move order
"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
Returns: 25
max test any order
"cacaabaabcaacbbaacbcaaabcaaabaaabbcbcbaaabaaccaabb"
Returns: 17
"bcedaeacabadccadbadbbbadddebdbcbcbdbaccbaebeccccce"
Returns: 6
"zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz"
Returns: 24
"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbb"
Returns: 24
"bbbbbdcccccccccaacccccbbbbaaaaaadddddddddaaaaaaaaa"
Returns: 24
"baabbbbbbaaaababababbbbaabbaaaababababaaabaababbaa"
Returns: 19
"aabbacccbaababcccbbccbcbacccbbcacbcbcabbabacccbbca"
Returns: 18
"cdbebdcaeacdeaeeccbecbeadcddcdeadbbaccbbeaaeceedeb"
Returns: 11
"aaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbb"
Returns: 24
"aaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbb"
Returns: 25
"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbb"
Returns: 24
"aaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
Returns: 24
"mmmmmmmmmmmmmmmmmmmmecdeacbedbcdaaebecbeqqqqqqqqqq"
Returns: 16
"ababababababababababababababababababababababababab"
Returns: 0
"bbbbaaaaaaabbbbbbbbbaaaaaaaaaabbbbbbbbaaaaaaaaaabb"
Returns: 24
"cccccccccccccaaaaaaaaacccccbaaaaaaaabbbbbbbbbbabbb"
Returns: 22
"ddddddddddbbbbccccbbbbbbbbbbbbbaaaaaaabbbbbbbccccc"
Returns: 23
"bbdbcbgggrrgbcaabd"
Returns: 9
"tuvxyzzyxlmnopqrssrqponmlvuabcdefghijkkjihgfedcbat"
Returns: 25
"k"
Returns: 0
min test
"amanaplanaccanalpanama"
Returns: 11
"noxinnixonmadam"
Returns: 5
"faaaccccf"
Returns: 3
"ntzlylvwulbdkcdppgykichjtpukfnlxfcevkjezqsme"
Returns: 1
"wimliygnfddfeswmxxuvhnqvjzgkpdzf"
Returns: 3
"ykzeqjjpehsgiqvyezbqwnpyuciolbbloxjxuozsuvqwphl"
Returns: 4
"mlotftnqrjolvuamahndekfdsqcfvm"
Returns: 0
"shtmrentgsnddnbttbbbmougguopyypw"
Returns: 10
"aabbccddeeffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyy"
Returns: 25
"aaba"
Returns: 1