一、题目描述
二、输入输出
三、参考示例
示例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是唯一真正密码。
四、解题思路
五、参考代码
/*
* @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++实现)