【华为OD机试真题】真正的密码

题目描述

在一行中输入一个字符串数组,如果其中一个字符串的所有以索引0开头的子串在数组中都有,那么这个字符串就是潜在密码,

在所有潜在密码中最长的是真正的密码,如果有多个长度相同的真正的密码,那么取字典序最大的为唯一的真正的密码,求唯一的真正的密码。

测试样例1

输入

h he hel hell hello o ok n ni nin ninj ninja

输出

ninja

说明

按要求,hello、ok、ninja都是潜在密码。

检查长度,hello、ninja是真正的密码。

检查字典序,ninja是唯一真正密码。

测试样例2

输入

a b c d f

输出

f

说明

按要求,a b c d f 都是潜在密码。

检查长度,a b c d f 是真正的密码。

检查字典序,f是唯一真正密码。

解题思路

为了解决这个问题,我们可以分以下几个步骤进行:

  1. 输入处理:将输入的字符串分割成一个列表。
  2. 潜在密码识别:遍历每个字符串,检查它的所有前缀是否都在列表中。如果是,则该字符串是一个潜在密码。
  3. 真正密码筛选:在所有潜在密码中,找出最长的密码。如果有多个长度相同的密码,选择字典序最大的那个。
  4. 输出结果:输出找到的真正密码。

Python代码解析

def find_unique_passwords(strings):
    # 创建一个集合以便快速查找
    string_set = set(strings)

    potential_passwords = []

    for s in strings:
        # 检查s的所有前缀
        is_potential = True
        for i in range(1, len(s) + 1):
            if s[:i] not in string_set:
                is_potential = False
                break
        if is_potential:
            potential_passwords.append(s)

    # 找到真正的密码
    unique_password = ""
    for pwd in potential_passwords:
        # 选择长度最长的,若相同则字典序较大的
        if (len(pwd) > len(unique_password)) or (len(pwd) == len(unique_password) and pwd > unique_password):
            unique_password = pwd

    return unique_password


if __name__ == "__main__":
    input_string = input().strip()
    strings = input_string.split()
    result = find_unique_passwords(strings)
    print(result)
#华为OD机试E卷##华为OD机考##华为OD题库##华为OD机试真题##华为OD机试算法题库#
全部评论

相关推荐

Twilight_m...:表格简历有点难绷。说说个人看法: 1.个人基本情况里好多无意义信息,什么婚姻状况、健康状况、兴趣爱好、户口所在地、身份证号码、邮政编码,不知道的以为你填什么申请表呢。 2.校内实践个人认为对找工作几乎没帮助,建议换成和测开有关的项目,实在没得写留着也行。 3.工作经历完全看不出来是干什么的,起码看着和计算机没啥关系,建议加强描述,写点你在工作期间的实际产出、解决了什么问题。 4.个人简述大而空,看着像AI生成,感觉问题最大。“Python,C,C++成为我打造高效稳定服务的得力工具”、“我渴望凭借自身技术知识与创新能力,推动人工智能技术的应用发展,助力社会实现智能化转型”有种小学作文的美感。而且你确定你个人简述里写的你都会嘛?你AI这块写的什么“深入研究”,发几篇顶会的硕博生都不一定敢这么写。而且你AI这块的能力和软测也完全无关啊。个人简述建议写你对哪些技术栈、哪些语言、哪些生产工具的掌握,写的有条理些,而且最好是和测开强相关的。
点赞 评论 收藏
分享
06-15 02:05
已编辑
南昌航空大学 数据分析师
Eason三木:你如果想干技术岗,那几个发公众号合唱比赛的经历就去掉,优秀团员去掉,求职没用。然后CET4这种不是奖项,是技能,放到下面的专业技能里或者单独列一个英语能力。 另外好好改改你的排版,首行缩进完全没有必要,行间距好好调调,别让字和标题背景黏在一起,你下面说能做高质量PPT你得展现出来啊,你这简历排版我用PPT做的都能比你做的好。 然后自我评价,你如果要干数据工程师,抗压能力强最起码得有吧。
简历中的项目经历要怎么写
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-10 11:55
点赞 评论 收藏
分享
评论
点赞
1
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务