使用嵌套循环优化 python 代码
Optimization of python code with nested loops
这是一个 hackerrank 问题,我在这里有点菜鸟。 5/15 的测试用例正在运行,但当要分析的字符串太大时,测试用例会因超时而终止。任何指导将不胜感激。
问题 - 给两个玩家相同的字符串,.
两个玩家都必须使用字符串的字母来创建子字符串。
斯图尔特必须造出以辅音开头的单词。
凯文必须造出以元音开头的单词。
如果一个子串出现x次,则构成+x分。
当双方都做出所有可能的子串时,游戏结束。
def minion_game(string):
vowels = {'A', 'E', 'I', 'O', 'U'}
strlen = len(string)
Stuart, Kevin = 0, 0
words = set([])
for i in range(strlen):
for j in range(i, strlen):
temp_word = string[i:j + 1]
temp_word_length = j-i+1
if temp_word not in words:
words.add(temp_word)
no_of_search = strlen - temp_word_length + 1
score = sum(temp_word == string[x : x + temp_word_length] for x in range(no_of_search))
if string[i] in vowels:
Kevin += score
else:
Stuart += score
if Stuart > Kevin:
print('Stuart', Stuart)
elif Kevin > Stuart:
print('Kevin', Kevin)
else:
print('Draw')
刚刚看了题源
这可能是最短的方法。
def minion_game(string):
vowels = ['A', 'E', 'I', 'O', 'U']
kevin = 0
stuart = 0
for i in range(len(string)):
if s[i] in vowels:
kevin += len(s)-i
else:
stuart += len(s)-i
if stuart > kevin:
print('Stuart '+ str(stuart))
elif kevin > stuart:
print('Kevin ' + str(kevin))
else:
print('Draw')
s = input()
minion_game(s)
这部分遍历输入字符串中的每个字母并检查它是否是元音。
for i in range(len(string)):
if s[i] in vowels:
HackerRank 会自动为您提供以下内容,如果您实际检查过,那就是声明的地方。
s = input()
minion_game(s)
这是一个 hackerrank 问题,我在这里有点菜鸟。 5/15 的测试用例正在运行,但当要分析的字符串太大时,测试用例会因超时而终止。任何指导将不胜感激。
问题 - 给两个玩家相同的字符串,. 两个玩家都必须使用字符串的字母来创建子字符串。 斯图尔特必须造出以辅音开头的单词。 凯文必须造出以元音开头的单词。 如果一个子串出现x次,则构成+x分。 当双方都做出所有可能的子串时,游戏结束。
def minion_game(string):
vowels = {'A', 'E', 'I', 'O', 'U'}
strlen = len(string)
Stuart, Kevin = 0, 0
words = set([])
for i in range(strlen):
for j in range(i, strlen):
temp_word = string[i:j + 1]
temp_word_length = j-i+1
if temp_word not in words:
words.add(temp_word)
no_of_search = strlen - temp_word_length + 1
score = sum(temp_word == string[x : x + temp_word_length] for x in range(no_of_search))
if string[i] in vowels:
Kevin += score
else:
Stuart += score
if Stuart > Kevin:
print('Stuart', Stuart)
elif Kevin > Stuart:
print('Kevin', Kevin)
else:
print('Draw')
刚刚看了题源
这可能是最短的方法。
def minion_game(string):
vowels = ['A', 'E', 'I', 'O', 'U']
kevin = 0
stuart = 0
for i in range(len(string)):
if s[i] in vowels:
kevin += len(s)-i
else:
stuart += len(s)-i
if stuart > kevin:
print('Stuart '+ str(stuart))
elif kevin > stuart:
print('Kevin ' + str(kevin))
else:
print('Draw')
s = input()
minion_game(s)
这部分遍历输入字符串中的每个字母并检查它是否是元音。
for i in range(len(string)):
if s[i] in vowels:
HackerRank 会自动为您提供以下内容,如果您实际检查过,那就是声明的地方。
s = input()
minion_game(s)