小美准备登录美团,需要输入密码,小美忘记了密码,只记得密码可能是 n 个字符串中的一个。小美会按照密码的长度从小到大依次尝试每个字符串,对于相同长度的字符串,小美随机尝试,并且相同的密码只会尝试一次。小美想知道,她最少需要尝试多少次才能登录成功,最多需要尝试多少次才能登录成功。 小美不会重新尝试已经尝试过的字符串。成功登录后会立即停止尝试。
第一行输入一个整数 n(1 ≤ n ≤ 1000) 代表密码字符串的个数。 第二行输入一个只由小写字母组成的字符串 s(1 ≤ |s| ≤ 1000 ) 代表正确的密码。 接下来 n 行,每行输入一个长度不超过 1000 的字符串,代表小美记得的密码。
在一行上输出两个整数,表示最少和最多尝试次数。
4 ab abc ab ac ac
1 2
考点:排序
数据规模 n ≤ 1e3 | 限制 1 秒 / 256MB | 标准输入输出
推荐方向:排序
本题切入点
把密码按「长度优先、同长度计数」分组,比目标密码短的字符数全部先试完,同长度的随机顺序决定最少/最多次数。
先用 O(n log n) 排序把无序变有序,后续处理往往就简单了。
思路框架(排序 通法 · 非本题专属)
实现要点:在 C++ 中用 std::sort,Python 用 sorted();注意自定义比较函数的严格弱序。
复杂度:时间 O(n log n) | 空间 O(log n) ~ O(n)
该范式的通法易错点
对照本题
样例 1:输入 4 / ab / abc / ab / ac / ac → 输出 1 2
小美可能按照 ["ab", "ac", "abc"] 的顺序尝试,第一次尝试成功,也可能按照 ["ac", "ab", "abc"] 的顺序尝试,第二次尝试成功。
小美在尝试 "ac" 发现不正确后不会继续尝试 "ac"。
解析由校招宝本地引擎整理(依据源站考点标签 / 人工判题标注 / 题面规模信号),非官方题解,仅供思路参考。
本题来源:2024年秋招-美团-技术岗-第一批笔试;2024年秋招-美团-前端移动端-第一批笔试;2024年秋招-美团-测试岗-第一批笔试 等。