华为机试 - 真正的密码
创始人
2024-04-13 22:53:52
0

目录

题目描述

输入描述

输出描述

用例

题目解析

算法源码


题目描述

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

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

输入描述

输出描述

用例

输入h he hel hell hello o ok n ni nin ninj ninja
输出ninja
说明

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

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

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

输入a b c d f
输出f
说明

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

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

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

题目解析

本题难点在于如果找出“潜在密码”,即找到一个字符串,它的所有前缀(比如hello字符串,的所有前缀包括:h,he,hel,hell,hello)都在第一行输入中。

这里,我们需要先将首字母相同的字符串缓存arr在一起,然后从最长的字符串开始判断:

先截取 str.substring(0,1) 左闭右开,即str的第一个字母,看是否存在于arr中,若不存在则验证下一个最长字符串,若存在,则继续截取str.substring(0, 2),即str的前两个字母,看是否存在于arr中,处理逻辑同上。

一直处理到,str.substring(0, str.length-1),如果还是存在于arr中的话,则str就是arr中最长的潜在密码。

同理,处理其他首字母相同的情况。最终比较出,长度最长,字典序最高的潜在密码作为真正的密码。

算法源码

/* JavaScript Node ACM模式 控制台输入获取 */
const readline = require("readline");const rl = readline.createInterface({input: process.stdin,output: process.stdout,
});rl.on("line", (line) => {const arr = line.split(" ");console.log(getResult(arr));
});function getResult(arr) {// 统计前缀相同的字符串const prefixObj = arr.sort().reduce((p, c) => {const prefix = c[0];p[prefix] ? p[prefix].push(c) : (p[prefix] = [c]);return p;}, {});const ans = []; // ans用于缓存潜在密码for (let k in prefixObj) {const arr = prefixObj[k];const set = new Set(arr);while (arr.length) {const top = arr.pop();let i = 1;while (i < top.length && set.has(top.substring(0, i))) {i++;}if (i === top.length) {ans.push(top);break;}}}// 返回真正的密码return ans.sort((a, b) =>a.length !== b.length ? b.length - a.length : b > a ? 1 : -1)[0];
}

相关内容

热门资讯

宇树科技被起诉,什么原因? 涉及侵权责任纠纷案件 投资时间网、标点财经快讯 天眼查法律诉讼信息显示,近日,杭州宇树科技股份有限公...
惠城环保:已制定《市值管理制度... 证券之星消息,惠城环保(300779)12月31日在投资者关系平台上答复投资者关心的问题。 投资者提...
看2026|和尔解王倩:降低调... 站在“十五五”新程待启的关键时点,如何看待2026年的经济形势?2026年经济工作怎么干?新京报贝壳...
奇瑞汽车申请满足软件升级法规要... 国家知识产权局信息显示,奇瑞汽车股份有限公司申请一项名为“一种满足软件升级法规要求的升级测试优化方法...
国台办:公安机关发布悬赏通告并... 12月31日上午,国台办在新闻发布厅举行例行新闻发布会,发言人张晗就近期两岸热点问题回答记者提问。 ...
元旦前发布这种朋友圈,他们面临... 元旦即将到来 不少人想买点烟花爆竹 增添节日氛围 朋友圈里也出现了 各种烟花爆竹的广告 但你知道吗 ...
“护航”增值税法顺利实施 配套... 新华社北京12月31日电 《经济参考报》12月31日刊发记者韦夏怡采写的文章《“护航”增值税法顺利实...
《山东省行政调解办法》5月1日... 在我们的日常生活中,难免会遇到各种纠纷,调解作为重要的纠纷解决方式,在维护群众权益方面发挥了重要作用...
上海发文推进老年人意定监护制度... 12月31日,上海市政府官网发布《上海市人民政府办公厅关于推进实施老年人意定监护制度的若干意见(试行...