查找在Python中首先重新排列角色以获得回文字符串的玩家
假设我们有一个带有小写字母的字符串S,现在有两个玩家在玩游戏。规则如下-
如果玩家可以任意移动字符串的字符以得到回文字符串,则该玩家将赢得比赛。
玩家必须从字符串中删除任何字符时无法赢。
我们必须记住,两个玩家都以最佳状态玩游戏,而player1开始游戏。我们必须找到游戏的赢家。
因此,如果输入类似于“pqpppq”,则输出将是Player1,因为第一步中的player-1安排角色以获得“ppqqpp”并赢得了游戏。
为了解决这个问题,我们将遵循以下步骤-
l:=序列大小
freq:=列出大小为26并填充0的列表
对于范围在0到l之间的i,增加1,
返回2
返回1
如果freq[i]mod2不为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