Find the player who rearranges the characters to get a palindrome string first in Python


Suppose we have a string S with lowercase letters, now two players are playing the game. The rules are as follows −

  • The player wins the game, if, at any move, a player can shuffle the characters of the string to get a palindrome string.

  • The player cannot win when he/she has to remove any character from the string.

We have to keep in mind that both players play the game optimally and player1 starts the game. We have to find the winner of the game.

So, if the input is like "pqpppq", then the output will be Player1 as player-1 in the first step arranges the characters to get “ppqqpp” and wins the game.

To solve this, we will follow these steps −

  • l := size of sequence

  • freq := make a list of size 26 and filled with 0

  • for i in range 0 to l, increase by 1, do

    • increase freq of sequence[i] by 1

    • count := 0

    • for i in range 0 to 25, do

      • if freq[i] mod 2 is not 0, then

        • count := count + 1

    • if count is 0 or count is odd, then

      • return 1

    • otherwise,

      • return 2

Example

Let us see the following implementation to get better understanding −

 Live Demo

def who_is_the_winner(sequence):
   l = len(sequence)
   freq = [0 for i in range(26)]
   for i in range(0, l, 1):
      freq[ord(sequence[i]) - ord('a')] += 1
   count = 0
   for i in range(26):
      if (freq[i] % 2 != 0):
         count += 1
   if (count == 0 or count & 1 == 1):
      return 1
   else:
      return 2
sequence = "pqpppq"
print("Player:", who_is_the_winner(sequence) )

Input

"pqpppq"

Output

Player: 1

Updated on: 27-Aug-2020

69 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements