查找在Python中首先重新排列角色以获得回文字符串的玩家

假设我们有一个带有小写字母的字符串S,现在有两个玩家在玩游戏。规则如下-

  • 如果玩家可以任意移动字符串的字符以得到回文字符串,则该玩家将赢得比赛。

  • 玩家必须从字符串中删除任何字符时无法赢。

我们必须记住,两个玩家都以最佳状态玩游戏,而player1开始游戏。我们必须找到游戏的赢家。

因此,如果输入类似于“ pqpppq”,则输出将是Player1,因为第一步中的player-1安排角色以获得“ ppqqpp”并赢得了游戏。

为了解决这个问题,我们将遵循以下步骤-

  • l:=序列大小

  • freq:=列出大小为26并填充0的列表

  • 对于范围在0到l之间的i,增加1,

    • 返回2

    • 返回1

    • 如果freq [i] mod 2不为0,则

    • 数:=数+ 1

    • 将序列[i]的频率增加1

    • 计数:= 0

    • 对于0到25范围内的i,执行

    • 如果count为0或count为奇数,则

    • 除此以外,

    示例

    让我们看下面的实现以更好地理解-

    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) )

    输入项

    "pqpppq"

    输出结果

    Player: 1
    猜你喜欢