问题陈述如下
游戏规则
两位选手都使用相同的字符串。两位选手都必须使用弦的字母制作子弦。Stuart必须以辅音开头的单词。凯文必须以元音开头的单词。当两个玩家都制作了所有可能的子字符串时,游戏结束。
计分球员每出现一次子串得+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)
输入:点击这里
预期产量:Stuart 7501500
输出:由于超时而终止
这是我对这个问题的旧解决方案
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加分。无需继续检查
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句