# Find the player who is the last to remove any character from the beginning of a Binary String

When working with binary strings in C++, it is common to need to identify specific patterns or players who perform certain actions. One common task is to find the player who is the last to remove any character from the beginning of a binary string. In this article, we will discuss an algorithm to solve this problem and provide a sample implementation in C++.

## Problem Statement

Given a binary string s and two players A and B, the players take turns removing any character from the beginning of the string. The player who removes the last character wins. If both players play optimally, determine which player will win the game.

## Algorithm

To solve this problem, we can use a simple observation. The player who starts the game with an odd number of 1's will always win, and the player who starts with an even number of 1's will always lose.

We can count the number of 1's in the binary string s and determine which player starts the game. If the number of 1's is odd, player A starts the game and will win. If the number of 1's is even, player B starts the game and will lose.

### Example

Here is an implementation of the algorithm in C++ −

#include <iostream>
#include <string>

using namespace std;

string findLastPlayer(string s) {
int countOnes = 0;
for (int i = 0; i < s.length(); i++) {
if (s[i] == '1') {
countOnes++;
}
}
if (countOnes % 2 == 1) {
return "Player A";
} else {
return "Player B";
}
}

int main() {
string s = "1101001";
string lastPlayer = findLastPlayer(s);
cout << "The last player to remove a character is " << lastPlayer << "." << endl;
return 0;
}


### Output

The last player to remove a character is Player B.


In this implementation, we use a loop to count the number of 1's in the binary string s. We initialize a counter countOnes to 0 and increment it for each character that is equal to '1'. We then check if countOnes is odd or even and return the name of the player who will win.

## Test Case

Let's test the function with an example. Suppose we have the following binary string −

string s = "101010";


We can call the findLastPlayer() function with s as an argument:

string lastPlayer = findLastPlayer(s);


The function will return "Player B", since the number of 1's in s is even, and player B starts the game and will lose. If we have a binary string with an odd number of 1's, the function will return "Player A", since player A will start the game and win.

## Conclusion

In conclusion, we have presented an algorithm to solve the problem of finding the player who is the last to remove any character from the beginning of a binary string in C++. By counting the number of 1's in the string, we can determine which player starts the game and who will win. We also provided a sample implementation of the algorithm in C++ and a test case to demonstrate its usage. By following the steps outlined in this article, you should now be able to determine the last player to remove a character from a binary string in your C++ programs.

Updated on: 17-May-2023

59 Views

Get certified by completing the course