首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Google Kickstart 2016轮A轮

Google Kickstart 2016轮A轮
EN

Stack Overflow用户
提问于 2020-07-15 12:46:46
回答 2查看 604关注 0票数 1

我是编程新手,但我设法写了一个程序来解决Google Kickstart 2016轮A中的“国家领导人”问题

https://codingcompetitions.withgoogle.com/kickstart/round/0000000000201ca2/0000000000201d30

我的程序在IDE中运行良好,但当我将它粘贴到Kickstart中时,它遇到了RE(运行时错误)。我在谷歌上搜索过,但我几乎找不到一个有效的解决这个问题的方法。如果有人能给我解释一下为什么会发生这个错误,我将不胜感激。下面是我的代码:

代码语言:javascript
复制
t = int(input())
tc = 0
while t > 0:
    name_number = int(input())
    name_dict = {}
    for _ in range(name_number):
        name = input()
        name_dict[name] = list(dict.fromkeys(list(name.replace(" ",""))))
        name = ""
    leader_list = []
    for a in list(name_dict):
        if all(len(name_dict[a]) >= len(name_dict[i]) for i in (list(name_dict))):
            leader_list.append(a)
    if len(leader_list) > 1:
        for x in leader_list:
            if all( x <= y for y in leader_list):
                leader = x
                break
    else:
        leader = leader_list[0]
    tc += 1
    print(f"Case #{tc}: {leader}")
    t -= 1
EN

回答 2

Stack Overflow用户

发布于 2020-07-15 13:11:36

您不需要保留任何列表来存储排序后的名称。您可以使用一个字典,它将人名存储为键,将不同字符的长度存储为值。先按值按降序排序,然后按键按升序排序。第一个排序的键是所需的名称leader

我已经像下面这样实现了这个逻辑,它通过了挑战的所有测试用例:

代码语言:javascript
复制
cas = int(input())
for t in range(1, cas+1):
    n = int(input())

    d = {}
    for i in range(n):
        person = input()
        d[person] = len(set(person.replace(" ","")))

    for key, value in sorted(d.items(), key=lambda x: (-x[1], x[0])):
        print("Case #{}: {}".format(t, key))
        break

解释:

key=lambda x: (-x[1], x[0]))这将按值按降序排列字典,按键按升序排列。这个排序操作之后的第一个值是我们想要的输出,因此我中断了循环。在Python3.6之前,dictinoary不能排序,我不知道codingcompetitions.withgoogle.com使用的是哪个Python版本。因此,我使用了一个循环来打印排序后的字典值,并在第一次打印后中断循环。

为了方便您的参考,我从language下拉菜单中选择了Python 3,并将上述代码粘贴到编辑器中。它通过了所有测试用例。

票数 2
EN

Stack Overflow用户

发布于 2020-11-22 20:56:10

在你发布这篇文章的时候,Kick Start使用的是python3.5,它不支持f字符串。但是,现在他们的python3版本是3.7版,所以您的代码现在应该可以工作了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62907770

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档