问题陈述如下
游戏规则
两个玩家都被赋予相同的字符串。两名球员都必须 子串使用字符串的字母。斯图尔特必须说话 从辅音开始。凯文必须以 元音。当两个玩家都使一切成为可能时,游戏结束 子字符串。
得分每次出现以下子串,球员可获得+1分 字符串。
例如:字符串= BANANA凯文的元音起始字= ANA在这里, ANA在BANANA中发生两次。因此,凯文将获得2分。 您的任务是确定游戏的获胜者及其得分。
代码:
def minion_game(string):
kevin,stuart=0,0
for i in range(0,len(string)):
for j in range(i,len(string)):
if string[i:j+1][0]=='A' or string[i:j+1][0]=='E' or string[i:j+1][0]=='I' or string[i:j+1][0]=='O' or string[i:j+1][0]=='U':
kevin=kevin+1
else:
stuart=stuart+1
if kevin>stuart:
print('Kevin',kevin)
elif kevin<stuart:
print('Stuart',stuart)
else:
print('Draw')
s = input()
minion_game(s)
输入: Click here
预期输出: 斯图尔特7501500
输出: 由于超时而终止
答案 0 :(得分:3)
这是我解决该问题的旧方法
def minion_game(string):
vowels = {'A','E','I','O','U'}
kevin = 0
stuart = 0
for i in range(len(string)):
if string[i] in vowels:
kevin += len(string) - i
else:
stuart += len(string) - i
if kevin == stuart:
print("Draw")
elif kevin > stuart:
print("Kevin " + str(kevin))
else:
print("Stuart " + str(stuart))
诀窍是要意识到您不需要尝试所有组合。看到元音或辅音后,就可以确定当前字符串的剩余长度是剩余的,因此您只需添加许多点即可
例如,给定“香蕉”一词,我们看到一个B,我们立即知道{B,BA,BAN,BANA,BANAN,BANANA}都将给Stuart积分。无需继续检查
答案 1 :(得分:0)
def minion_game(string):
c=0
c1=0
v=('A','E','I','O','U')
for i in range(0,len(string)):
sa=""
if string[i] not in v:
sa=sa+string[i]
c=c+1
for j in range(i,len(string)-1):
sa=sa+string[i+1]
c=c+1
i=i+1
else:
sa=sa+string[i]
c1=c1+1
for j in range(i,len(string)-1):
sa=sa+string[i+1]
c1=c1+1
i=i+1
if(c>c1):
print('Stuart '+str(c))
elif(c1>c):
print('Kevin '+str(c1))
elif(c1==c):
print('Draw')