美团2024年秋招第一场笔试【技术】

美团2024年秋招第一场笔试【技术】

  1. 小美的密码

小美准备登录美团,需要输入密码,小美忘记了密码,只记得密码可能是 nn 个字符串中的一个。小美会按照密码的长度从小到大依次尝试每个字符串,对于相同长度的字符串,小美随机尝试,并且相同的密码只会尝试一次。小美想知道,她最少需要尝试多少次才能登录成功,最多需要尝试多少次才能登录成功。
          小美不会重新尝试已经尝试过的字符串。成功登录后会立即停止尝试。

时间限制:C/C++ 1秒,其他语言2秒

空间限制:C/C++ 256M,其他语言512M

输入描述:

第一行输入一个整数  代表密码字符串的个数。
第二行输入一个只由小写字母组成的字符串  代表正确的密码。
接下来n行,每行输入一个长度不超过1000的字符串,代表小美记得的密码。

输出描述:

在一行上输出两个整数,表示最少和最多尝试次数。

示例1

输入例子:

4
ab
abc
ab
ac
ac

输出例子:

1 2

例子说明:

小美可能按照 ["ab", "ac", "abc"] 的顺序尝试,第一次尝试成功,也可能按照 ["ac", "ab", "abc"] 的顺序尝试,第二次尝试成功。
小美在尝试 "ac" 发现不正确后不会继续尝试 "ac"。
import java.util.Comparator;
import java.util.HashSet;
import java.util.Scanner;
import java.util.Set;

public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int n = in.nextInt();
        in.nextLine();
        String correct = in.nextLine();
        Set<String> set = new HashSet<>();
        for (int i = 0; i < n; i++) {
            set.add(in.nextLine());
        }
        String[] possible = set.stream().sorted(Comparator.comparingInt(String::length)).toArray(String[]::new);
        int small = 0, same = 0;
        for (String s : possible) {
            if (s.length() < correct.length()) {
                small++;
            } else if (s.length() == correct.length()) {
                same++;
            }
        }
        System.out.println((small + 1) + " " + (small + same));
        in.close();
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值