Problem Statement
You are given two
When the string turns into E, player A wins. If player A can win the game, return the minimum possible number of turns A has to take. (We assume that if player A can ensure a win, then player B uses a strategy that postpones his loss for as long as possible.) If player A cannot win the game, return -1 instead.
Definition
- Class:
- XorGame
- Method:
- play
- Parameters:
- String, String
- Returns:
- int
- Method signature:
- int play(String S, String E)
- (be sure your method is public)
Constraints
- S will contain between 1 and 50 characters, inclusive.
- S and E will contain the same number of characters.
- Each character in S and E will be '0' or '1'.
Examples
"10101"
"11011"
Returns: 1
Player A can win in the first turn by flipping characters 1 through 3 (0-based indices).
"001100"
"001100"
Returns: 0
Player A wins immediately after the game begins.
"110"
"011"
Returns: 2
In this case, player A cannot win in her first turn. However, she can start by flipping characters 1 and 2, producing the string "101". Regardless of what player B does (and even if he chooses not to flip anything), she will then have winning move in her second turn.
"10101010"
"11111111"
Returns: -1
"001011010101101"
"001000101101101"
Returns: 1
"0"
"0"
Returns: 0
"0"
"1"
Returns: 1
"1"
"0"
Returns: 1
"1"
"1"
Returns: 0
"00"
"01"
Returns: 1
"10"
"11"
Returns: 1
"11"
"00"
Returns: 1
"000"
"111"
Returns: 1
"101"
"010"
Returns: 1
"101"
"111"
Returns: 1
"000"
"101"
Returns: 2
"0000"
"1010"
Returns: 2
"0000"
"0101"
Returns: 2
"0000"
"1001"
Returns: 2
"1010"
"0101"
Returns: 1
"1101"
"1000"
Returns: 2
"1111"
"0110"
Returns: 2
"1010"
"0101"
Returns: 1
"1010"
"1110"
Returns: 1
"0110"
"1110"
Returns: 1
"0010"
"1001"
Returns: 3
"0111"
"0000"
Returns: 1
"1001011010101"
"1000011010101"
Returns: 1
"001010101001001"
"110101010110110"
Returns: 1
"0000000000"
"1111111111"
Returns: 1
"0000000000000000000000000000000000000000"
"1111111111111111111111111111111111111111"
Returns: 1
"0000000000000000000000000000000000000000"
"1000000000000000000000000000000000000001"
Returns: -1
"0000000000000000000000000000000000000000"
"1000000000000000000000000000000000000000"
Returns: 1
"0000000000000000000000000000000000000000"
"0000000000001000000000000000000000000000"
Returns: 1
"0000000000000000000000000000000000000000"
"0000000000000000000001111111111000000000"
Returns: 1
"1101001010101000000011010010000100111001"
"0101001010101000000011010010000100111000"
Returns: -1
"1100001101000011110100111011010101001110"
"1100001101000011110100111011010101001110"
Returns: 0
"1011101001010100100101010101011110100011"
"1011101001010100100100010101011110100011"
Returns: 1
"10100111010010"
"10100110101100"
Returns: 1
"11110011111100111011"
"11001100000011011011"
Returns: 1
"1111000111101100001100000000101001110000100010"
"1111000110010011110011111100101001110000100010"
Returns: 1
"1011011000011010011111101001011111110101111"
"1011011000000101100000010110111111110101111"
Returns: 1
"0111101110011111000000011100111010110110100011101"
"0111101110011111000000011100100100110110100011101"
Returns: 1
"1001001010111010"
"1111001010111010"
Returns: 1
"011111111"
"011100001"
Returns: 1
"101011100011010001011000001010101111"
"010100011100101110100110001010101111"
Returns: 1
"0011010011010100110001010"
"1100110011010100110001010"
Returns: 1
"101001"
"110110"
Returns: 1
"1111010100011011010001001101"
"1111010100011000100001001101"
Returns: 1
"1010101011001011000011000101001110010011111111010"
"1010101011001011000011000101000001101100000000100"
Returns: 1
"1"
"0"
Returns: 1
"11101010101011101100111110"
"11101010100100010100111110"
Returns: 1
"1100100101111101001111001100000001000000001010111"
"1100011010000010110000110100000001000000001010111"
Returns: 1
"0010011100000011"
"0010011100001101"
Returns: 1
"01111110111100101010001101"
"01111110100011010101111101"
Returns: 1
"11111001110010001111001001011100110101010110000"
"11000110001101110111001001011100110101010110000"
Returns: 1
"011011001011001010101111010000011"
"011011001011000101011111010000011"
Returns: 1
"0001100010111100100001111011001"
"0001100101000011011110000100110"
Returns: 1
"010101001111011010010"
"011101001111011010010"
Returns: 1
"11011010010101010100000000000010110"
"11011010011101010100000000000010110"
Returns: 1
"1100110100010111110"
"1100110110010111110"
Returns: 1
"0001101010000010111111100111000001000001010011110"
"0001101010000010111111100111000001000101010011110"
Returns: 1
"011100111011110011111100011011"
"011101111011110011111100011011"
Returns: 1
"00001011"
"01001011"
Returns: 1
"010110010101111101111001"
"010110010111111101111001"
Returns: 1
"0101101101110010001000010011"
"0101101101100010001000010011"
Returns: 1
"1001000000010111110000111010001"
"1001000000010111110000101010001"
Returns: 1
"001110000011011001101"
"001111000011011001101"
Returns: 1
"00111110010010000001010001010010111"
"01000011111001000001111110110100001"
Returns: -1
"11101100000011011011000"
"10001010000111101010010"
Returns: -1
"11011111111110110110110111101000101000"
"11100110111111100100110000001110011010"
Returns: -1
"1000000011011000101011011100111000"
"0001111001001100111000000000111010"
Returns: -1
"0000101100111100110"
"0011110101011110101"
Returns: -1
"1001010100011010101"
"0000110011110001101"
Returns: -1
"000000000111001011000110111010110001101100"
"111001011010110100011000101000100001101100"
Returns: -1
"00000"
"11000"
Returns: 1
"1010111011011110001100"
"0011101001110100011010"
Returns: -1
"11010111110011011001001110000101110111001"
"11101000101011010100000110101100110110101"
Returns: -1
"1110010011100101100001000101"
"1110010011100101100110111001"
Returns: 1
"101100"
"111011"
Returns: -1
"001011011100111011101101100111000010110"
"000100100000111011101101111000111101110"
Returns: -1
"10011010000101011110000000110110"
"10011010000100100001100000100110"
Returns: -1
"0000111101000000001011111111110010001101000100101"
"0000111110111110001100000000001110001101000100101"
Returns: -1
"0111"
"1100"
Returns: 3
"111"
"010"
Returns: 2
"1111100011001100110001"
"1111101100110011001001"
Returns: 1
"101010101"
"110010110"
Returns: -1
"00000101001001000011001100011100110010"
"00000100110110101100110011011100110010"
Returns: -1
"0000"
"1011"
Returns: 3
"0000"
"1101"
Returns: 3
"0101"
"0000"
Returns: 2
"0000"
"1001"
Returns: 2
"0000"
"1010"
Returns: 2
"1101"
"0000"
Returns: 3