一、题目描述

二、输入输出

三、参考示例

示例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是唯一真正密码。

【华为OD机试真题】A卷-真正的密码(JAVA)-LMLPHP

四、解题思路

五、参考代码

/*
 * @Author: mgc
 * @Date: 2024-02-02 17:47:00
 * @LastEditors: Do not edit
 * @LastEditTime: 2024-02-02 17:48:55
 */

// import java.util.*;
// import java.util.HashMap;
// import java.util.Scanner;
// import java.util.regex.Matcher;
// import java.util.stream.Stream;
// import java.util.regex.Pattern;
// import java.util.stream.Collectors;

import java.util.Scanner;
import java.util.*;

class Main {
    public static int minTimes;

    public static void main(String[] args) {
        // 处理输入
        Scanner in = new Scanner(System.in);
        String[] inputStrings = in.nextLine().split(" ");

        // 将所有字符串放入哈希集合
        HashSet<String> wordSet = new HashSet<>();
        for (String str : inputStrings) {
            wordSet.add(str);
        }

        // 真正的密码
        String truePassword = "";

        // 按顺序检查每一个词
        for (String str : inputStrings) {
            // 条件1:检查这个词所有以索引0开头的子串在数组中是否都有
            boolean flag = true;
            for (int i = 1; i < str.length(); i++) {
                // 以索引0开头的子串
                String subStr = str.substring(0, i);
                if (!wordSet.contains(subStr)) {
                    flag = false;
                    break;
                }
            }

            if (flag) {
                // 条件2:比较密码长度
                if (str.length() > truePassword.length()) {
                    truePassword = str;
                }
                // 条件3:比较密码字典排序
                if (str.length() == truePassword.length() && str.compareTo(truePassword) > 0) {
                    truePassword = str;
                }
            }
        }

        System.out.println(truePassword);
    }
}

六、华为OD机试真题汇总目录

    【华为OD机试】真题汇总A+B+C+D券(Python实现)

    【华为OD机试】真题汇总A+B+C+D卷(JAVA实现)

    【华为OD机试】真题汇总A+B+C+D卷(C++实现)

04-03 01:30