Given a string S consisting of lower-case English alphabets only, we have two players playing the game. The rules are as follows:
- The player can remove any character from the given string S and write it on paper any side(left or right) of an empty string.
- The player wins the game, if at any move he can get a palindromic string first of length > 1.
- If a palindromic string cannot be formed, Player-2 is declared as the winner.
Both play optimally with player-1 starting the game. The task is to find the winner of the game.
Input: S = “abc”
There are all unique character due to which there
is no way to form a palindromic string of length > 1
Input: S = “abccab”
Initially newString = “” is empty.
Let Player-1 chooses character ‘a’ and write it on paper.
Then, S = “bccab” and newString = “a”.
Now Player-2 chooses character ‘a’ from S and write it on left side of newString.
Thus, S = “bccb” and newString = “aa”.
Now, newString = “aa” is a palindrome of length 2.
Hence, Player-2 wins.
Approach: The idea is to formulate a condition in which Player-1 is always going to be the winner. If the condition fails, then Player-2 will win the game.
- If there is only one unique character occurring once in the given string, and the rest of the characters occurring more than 1 then Player-1 is going to be the winner, else Player-2 will win always.
- If we have all characters that are occurring more than once in the given string, then Player-2 can always copy Player-1 move in his first turn and wins.
- Also, if we have more than one character in the string occurring one time only, then a palindrome string can never be formed(in optimal case), hence again Player-2 wins.
Below is the implementation of the above approach:
Time Complexity: O(N)
Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.