用嵌套循环优化python代码

2024-09-29 00:22:24 发布

您现在位置:Python中文网/ 问答频道 /正文

这是一个骇客问题,我是这里的一个不速之客。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')


Tags: 字符串inforstringif玩家rangelength
1条回答
网友
1楼 · 发布于 2024-09-29 00:22:24

我只是看看问题的来源

这可能是你能做到的最短的方法

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)

相关问题 更多 >