Given an even length string S consisting of lower-case English alphabets only, we have two players playing the game. The rules are as follows:
- the player wins the game, if, at any move, a player can re-arrange the characters of the string to get a palindrome string.
- if the player cannot win the game, he has to remove any character from the string.
Both players play the game optimally with player-1 starting the game. The task is to print the winner of the game.
Input: S = “abaaab”
Player-1 in the first step arranges the characters to get “aabbaa” and wins the game.
Input: S = “abca”
As the game is being played optimally, player-1 removes ‘a’ to get string “bca” which cannot be rearranged by player-2 in the second move to win the game.
Player-2 optimally removes ‘b’ and the string is now “ca”.
In the third move, player-1 removes “a” as he cannot rearrange the characters, the new string is “c”, which the player-2 at the next move can make a palindrome.
- Count the frequencies of each character in a freq array.
- Count the characters that occur odd number of times.
- If the count is 0 or an odd number, then Player-1 will always win the game, else player-2 will win because player-2 will make the last move.
Below is the implementation of the above approach:
- Check if characters of a given string can be rearranged to form a palindrome
- Minimum number of characters to be replaced to make a given string Palindrome
- Check if the characters in a string form a Palindrome in O(1) extra space
- Minimum characters to be added at front to make string palindrome
- Check if string remains palindrome after removing given number of characters
- Minimum length of the sub-string whose characters can be used to form a palindrome of length K
- Find the smallest window in a string containing all characters of another string
- Find longest palindrome formed by removing or shuffling chars from string
- Find the character made by adding all the characters of the given string
- Find the longest substring with k unique characters in a given string
- Python Dictionary to find mirror characters in a string
- Find largest word in dictionary by deleting some characters of given string
- Program to find the product of ASCII values of characters in a string
- Find the number of strings formed using distinct characters of a given string
- Program to find the largest and smallest ASCII valued characters in a string
If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to email@example.com. See your article appearing on the GeeksforGeeks main page and help other Geeks.
Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.