Problem Statement
You have three strings A, B, C. Initially, A is equal to a
Your task in this problem is to transform A from init into goal by applying the following operations to the strings.
- If A is not an empty string, remove the leftmost character from A, and add it to the end of B.
- If A is not an empty string, remove the leftmost character from A, and add it to the end of C.
- If B is not an empty string, remove the leftmost character from B, and add it to the end of A.
- If C is not an empty string, remove the leftmost character from C, and add it to the end of A.
You can apply the operations in any order and each operation can be used an arbitrary number of times. Return the minimal number of operations required to finish the task. The constraints guarantee that this is always possible.
Definition
- Class:
- TripleStrings
- Method:
- getMinimumOperations
- Parameters:
- String, String
- Returns:
- int
- Method signature:
- int getMinimumOperations(String init, String goal)
- (be sure your method is public)
Constraints
- init will contain between 1 and 50 characters, inclusive.
- init and goal will contain the same number of characters.
- Each character of init and goal will be either lowercase 'o' or lowercase 'x'.
- The number of 'o' characters in init will be equal to the number of 'o' characters in goal.
Examples
"ooxxox"
"xoxoxo"
Returns: 6
One of the optimal solutions is as follows: initial: A=ooxxox B= C= use operation 1: A=oxxox B=o C= use operation 2: A=xxox B=o C=o use operation 2: A=xox B=o C=ox use operation 4: A=xoxo B=o C=x use operation 4: A=xoxox B=o C= use operation 3: A=xoxoxo B= C=
"oooxxoo"
"oooxxoo"
Returns: 0
init and goal are the same, so no operation is required.
"ox"
"xo"
Returns: 2
"ooxxooxx"
"xxoxoxoo"
Returns: 12
"oxxoxxoooxooooxxxoo"
"oxooooxxxooooxoxxxo"
Returns: 16
"xxxoxoxxooxooxoxooo"
"oxxooxxooxxoxoxooxo"
Returns: 36
"x"
"x"
Returns: 0
"o"
"o"
Returns: 0
"xx"
"xx"
Returns: 0
"ox"
"xo"
Returns: 2
"oo"
"oo"
Returns: 0
"xxx"
"xxx"
Returns: 0
"oox"
"oox"
Returns: 0
"ooo"
"ooo"
Returns: 0
"xxoxxox"
"xxooxxx"
Returns: 12
"oxoooxo"
"xxooooo"
Returns: 14
"oxxoxoo"
"oxoxxoo"
Returns: 12
"oooooxoxxoxooo"
"oxoxxooooooxoo"
Returns: 26
"xoxooooxxoxoxx"
"xxoxooooxxxoox"
Returns: 24
"oxooooxxxoxxoo"
"xxoxoxoooxooox"
Returns: 28
"ooooooxoxoxxxxooooooo"
"ooooxooooxxoxoxooooxo"
Returns: 34
"xxxxxxxxxxoxxoxxxxxxx"
"xxoxxxxxxxxxxxxxxxxxo"
Returns: 22
"xoooxoooooxxooooooooo"
"oxoooooxooooxooooooox"
Returns: 40
"ooooxoxooooooooooooooooooooo"
"oooooooooooooooooooooxoooxoo"
Returns: 14
"xxxxxxxxxxxxxxoxxxxxxxxoxxxx"
"xxxxxxxxxxxxxxxxxxxxxxxxxoox"
Returns: 48
"oooxooxoxxoxooxxoxooxooxooox"
"ooxxxooxoooxxxxoooxooxooooxo"
Returns: 50
"xxoxooxoxox"
"xxxxxooooxo"
Returns: 20
"oooooooxxoo"
"oxxoooooooo"
Returns: 12
"xxooxooxoxx"
"ooxooxoxxxx"
Returns: 4
"ooxooxoxoxooxxxoxoxxxx"
"oxxxxxooxxxooxoxoxoxoo"
Returns: 34
"xoooxxxxxxxxooxxooxooo"
"xxooxxooxoooxxoxxxxoox"
Returns: 20
"oxxxxoxooxxxoxooooooxx"
"xxxoxooxxxoxooooooxxxo"
Returns: 4
"xoxxoooooooxooxxooxxooooxxxoxxoxx"
"xxxoxxoxxxoooxooxxoooxoxxooooooox"
Returns: 48
"oxxxxooxxoooxxxooxxxoxoxxxxooxoxo"
"xxooxxxoxoxxxxooxoxoxxoooxxoxoxox"
Returns: 26
"ooxoxxoxxxxxooxooxooxoxxxxxoxoxox"
"xoxxoxxxxxooxooxooxoxxxxxoxoxoxoo"
Returns: 4
"xoooxxxoooxoooxoxxoxxoooxxxxxxxxxxooooxxxxxo"
"xxooooxxxxxoxoxxxxxxoxxxoooooxxooooxoxxoxxxo"
Returns: 64
"ooxxoxxxxoxoxooxoxoxooxxxxxxooxxxxxxoxxxoxoo"
"xoxooxxxxxxooxxxxxxoxxxoxooxxxoxoxooooxoxoxx"
Returns: 34
"oxoxoxxxoxoxoooxxoxoxxxoxoxxooxooxxooooxxoox"
"oxoxxxoxoxoooxxoxoxxxoxoxxooxooxxooooxxooxxo"
Returns: 4
"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
Returns: 0
"oooooooooooooooooooooooooooooooooooooooooooooooooo"
"oooooooooooooooooooooooooooooooooooooooooooooooooo"
Returns: 0
"xxxxxxxxxoxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
"xxxxxxxxxxxxxxxxxoxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
Returns: 66
"ooooooooooooooooooooooooooooooooooooooooooooooxooo"
"ooxooooooooooooooooooooooooooooooooooooooooooooooo"
Returns: 88
"xxxxoxxxoxxoxxxoxxxxoxxxxxxxoxxoxxxxxxxxxxoxxxxxxo"
"xxoxoxxxoxoxxxxxxoxxxxxxxxxxooxxxxxxxxxoxxxoxxxxxx"
Returns: 94
"xxxoxoxoxxxxxxxoxoxoooxxoxooxxxxooxxxxxoxxxxxxoxox"
"xxxxxoooxxooxxoxxxoxxxxoxxxoxxxxxxooxooxxoxxoxxoxx"
Returns: 98
"oxxxoooxoxxxxoxxxxooxoxoxoxxooxooooxxoxxooxoxoxxox"
"xxoxooooxooooxxooxooxxoxoxxxoxxxxxxoxooxxooxoxxxxo"
Returns: 92
"oxooxxoxooooxxxooooxxooxooxxoooooooxoxxoooooxxoxxx"
"xxooooooxooxoooooxoooxooooxoxxxooxoxxoxoxxxxoxoxoo"
Returns: 96
"oooooxoxoooxxoooooooooxoooxoxoooxooxooxxooooxxoooo"
"oooxooooooooooxoxxoxxooxooooxoooxoooooooxooxoooxxo"
Returns: 94
"xooooooooooooxoooooooooxooxoooooxooooooooooxoooooo"
"oooooooxoxoxxooooooooxoooooooooooooooooxoooooooooo"
Returns: 88
"ooxxxxoxxxoxxoxxooooxoooxoooxxxxoxooxooxxoxooxooxx"
"oxooxooxxooxxoooxooxxxooxxoxoooxxoxoxxxooxxxxxooxo"
Returns: 82
"ooxoxxoxooxoxxoxxoxooxxoxoxoxxooooxooooooxxxxxoxxx"
"xooooooxxxxxoxxxooxoooxooxooxxxoooxxoxxxxxoxoxxooo"
Returns: 68
"oxxooxoxoxxxooxxoooxoxooooxxoxoxooxxxoxxxoxoxoxxxx"
"xoxoxooxxxoxxxoxoxoxxxxoxoooooxxxooxoxoxxooxxoxoxo"
Returns: 54
"oooxooooxxxxxoxxxoxxooooooxoooxxoxxxxxxooxoxoxxoox"
"ooooooxoooxxoxxxxxxooxoxoxxooxoxoxxxxooooxoxoxxxox"
Returns: 40
"oooxxxooxxoooxooxxxxooooxoxoxoxxxoxooxoxoxxxxxoxxo"
"xooxxxxooooxoxoxoxxxoxooxoxoxxxxxoxxoxooxooxoxooox"
Returns: 26
"xoxxxxxoxoooooxoxxooooooxoxxoooxooxxxxxoxxoxoxoxxx"
"xoxoooooxoxxooooooxoxxoooxooxxxxxoxxoxoxoxxxxoxxxx"
Returns: 12
"xoxoxooxooxxooxxxxxoxoxoooxxxooxoooxxooxxooxxxxxoo"
"xoxooxooxxooxxxxxoxoxoooxxxooxoooxxooxxooxxxxxooox"
Returns: 4
"oxoooxxxoooxoooxoxxooxoxooxooxxxoxooxooooooxxxooox"
"ooxxxoooxoooxoxxooxoxooxooxxxoxooxooooooxxxoooxxoo"
Returns: 6
"ooooooxxoxooxooxoxxxxoooxooxoxooooxooxooxxxoxooooo"
"ooxxoxooxooxoxxxxoooxooxoxooooxooxooxxxoxooooooooo"
Returns: 8
"oooxxxxooxxxooxxxoooxoxoxoooxooooooxxxooxoxoooxxox"
"xooooooooxoxooxooxoxooxoxooxxxxxxxxoxxooxoooxooxox"
Returns: 98
"xxoxxxooooxoooxxoooxxooxoxooxoxxxxoxxxoxooxoooooxx"
"xxxoooxxxxooooxooxoxoxxooxooxxxoxxooxooooxxoxoxxoo"
Returns: 96
"xoxxxxxoxoooxooooxoxoxoxxxxooxoxxooooxxxoxxxxxxoxo"
"oxoxxoxooooxxooxooxxxoxxxxoxxxxoooxoxxoxxxoxxxxooo"
Returns: 94
"xoxooxooxxooxxxxxoxoxoooxxxooxoooxxooxxooxxxxxooox"
"xoxooxooxxooxxxxxoxoxoooxxxooxoooxxooxxooxxxxxooox"
Returns: 0
"xoxo"
"xxoo"
Returns: 8
"ooxx"
"oxox"
Returns: 8
"oxxox"
"ooxxx"
Returns: 10
"oooxxxooxxoooxxxooxxoooxxxooxxoooxxxooxxoooxxxooxx"
"oxoxoxoxoxoxoxoxoxoxoxoxoxoxoxoxoxoxoxoxoxoxoxoxox"
Returns: 100
"oxox"
"ooxx"
Returns: 8
"oooooooooooooooooooooooooxxxxxxxxxxxxxxxxxxxxxxxxx"
"ooooooooooooooooooooooooxoxxxxxxxxxxxxxxxxxxxxxxxx"
Returns: 100
"ooooooooooooooooooooooxoxxxxxxxxxxxxxxxxxxxxx"
"oooooooooooooooooooooooxxxxxxxxxxxxxxxxxxxxxx"
Returns: 90
"ooooooooooooooooooooooooooooooooooooooooooooooooxx"
"oxoxoooooooooooooooooooooooooooooooooooooooooooooo"
Returns: 100
"xxoo"
"xoxo"
Returns: 8
"xxxooo"
"xoxoxo"
Returns: 12
"xoxoxoxoxoxoxoxxxxxxxxxx"
"xxxxxxxxxxxxxxxxxooooooo"
Returns: 28
"oooxxx"
"oxoxox"
Returns: 12
"oxoxx"
"ooxxx"
Returns: 10
"xxxxooxxoooxxxoxxxxoxoxooxxooxoxxoxooxxoxxoxo"
"xxooooxxooxxxxxxxxoxooxxxoxxxoxooxoxoxoooxoxx"
Returns: 90
"ooxox"
"oooxx"
Returns: 10
"xoooxooxxxxoxxoxoxoxoxxoxxxoxooxooxxoooxxooxxxooxo"
"oxxooxoxoxxoxxooxoxxxoooxxxxoxoxxoxxxoooxoooooxxox"
Returns: 98
"oxoox"
"oooxx"
Returns: 10
"ooooxoxo"
"ooooxxoo"
Returns: 14
"xxxxxxxxxxxxxxxxxxxxxxxxxooooooooooooooooooooooooo"
"xxxxxxxxxxxxxxxxxxxoxxxxxooooooooooxoooooooooooooo"
Returns: 100
"xoxox"
"ooxxx"
Returns: 10
"xxooo"
"xooxo"
Returns: 10
"xoxoxoxoxoxoxoxoxoxoxoxoxoxoxoxoxoxoxoxoxoxoxoxoxo"
"xxooxxooxoxxooxxooxxooxxooxxooxxooxxooxxooxxooxxoo"
Returns: 100
"oxoxoxox"
"ooooxxxx"
Returns: 16
"xoxoxoxoxoxoxoxoxoxoxoxoxoxoxoxoxoxoxoxoxoxoxoxoxo"
"xxxxxxxxxxxxxxxxxxxxxxxxxooooooooooooooooooooooooo"
Returns: 100
"xoxxoxoxxooxxxxooxxoxxxoxxxxooooxoxxoxxoxooxoooxoo"
"ooxoxxxoxoxxoxxoxoxxoooxxoxxxoxxxxooooxxxoxxxooooo"
Returns: 96
"oooxx"
"oxoxo"
Returns: 10
"xxoxxoo"
"xoxooxx"
Returns: 14
"xoxoxo"
"xxxooo"
Returns: 12
"oxoxoxooxxxoxxxxxoxoxxxxoxo"
"xxxxooooxxoxxxoxoxoxxxxooxx"
Returns: 54
"xxxxoooooo"
"xoooxxooxo"
Returns: 20
"xooxo"
"xxooo"
Returns: 10
"ooxxoo"
"xoxooo"
Returns: 12
"ooxoxx"
"oooxxx"
Returns: 12
"ooxxx"
"oxxox"
Returns: 10
"xxooxx"
"oxoxxx"
Returns: 12
"oxoxxx"
"oxxoxx"
Returns: 12
"xxoxoo"
"xxxooo"
Returns: 12
"oxxoo"
"xoxoo"
Returns: 10
"oxxoox"
"oooxxx"
Returns: 12