题目内容
在一行中输入一个字符串数组,如果其中一个字符串的所有以索引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是唯一真正密码
解题思路
将输入的字符串存入数组;使用HashSet存储这些字符串,确保唯一性;
遍历输入的字符串数组,针对每一个字符串,从索引1开始,判断其所有以索引0开头的子串是否在HashSet中;
如果所有子串都在HashSet中,说明当前字符串是潜在密码;
如果当前潜在密码长度大于真正的密码长度,更新真正的密码为当前
这篇博客介绍了华为在线开发者测试中的一道题目,涉及到字符串处理和集合操作。题目要求找到输入字符串数组中,满足特定条件的最长潜在密码,并在存在长度相同的情况下,选择字典序最大的作为唯一真正的密码。解题思路包括存储输入字符串到HashSet,遍历并检查每个字符串的子串是否都在集合中,最后更新最长潜在密码。示例展示了如何处理不同情况并给出了解决代码。
订阅专栏 解锁全文
2万+

被折叠的 条评论
为什么被折叠?



