猿辅导8.26笔试

第一题,找出没有匹配上停用词的单词的最高频数,直接暴力
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.HashMap;
import java.util.Map;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int M = Integer.parseInt(br.readLine().trim());
        while(M -- > 0){
            String[] words = br.readLine().trim().split(" ");
            int N = Integer.parseInt(words[0]);
            String[] regs = br.readLine().trim().split(" ");
            int K = Integer.parseInt(regs[0]);

            Map<String, Integer> map = new HashMap<>();
            a : for (int i = 1; i <= N; i++) {
                String str = words[i].toLowerCase();
                for (int j = 1; j <= K; j++) {
                    if(fit(str, regs[j].toLowerCase())){
                        continue a;
                    }
                }
                map.put(str, map.getOrDefault(str, 0) + 1);
            }
            int max = 0;
            for(String str : map.keySet()){
                max = Math.max(map.get(str), max);
            }
            System.out.println(max);
        }
    }
    private static boolean fit(String str, String reg){
        if(str.length() != reg.length()){
            return false;
        }

        for(int i = 0; i < str.length(); i++){
            char c = reg.charAt(i);
            if(c != '?' && str.charAt(i) != c){
                return false;
            }
        }
        return true;
    }
}
第二题:数字K分解质因数,且都包含在数组中最小数组子集长度,暴力过
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int M = Integer.parseInt(br.readLine().trim());
        while(M-- > 0){
            String[] params = br.readLine().trim().split(" ");
            int K = Integer.parseInt(params[0]);
            int N = Integer.parseInt(params[1]);
            int[] arr = new int[N];
            boolean[] isPrime = new boolean[N];
            params = br.readLine().trim().split(" ");
            int minLen = Integer.MAX_VALUE;
            for (int i = 0; i < N; i++) {
                arr[i] = Integer.parseInt(params[i]);
                isPrime[i] = isPrime(arr[i]);
            }
            for(int i = 0; i < N; i++){
                if(!isPrime[i] || K % arr[i] != 0){
                    continue;
                }
                int temp = K / arr[i];
                if(temp == 1){
                    minLen = 1;
                    break;
                }
                for(int j = i + 1; j < N; j++){
                    if(!isPrime[j] || temp % arr[j] != 0){
                        continue;
                    }
                    temp /= arr[j];
                    if(temp == 1){
                        minLen = Math.min(minLen, j - i + 1);
                        break;
                    }
                }
            }
            System.out.println(minLen);
        }
    }
    private static boolean isPrime(int n){
        if(n == 1){
            return false;
        }
        for(int i = 2; i < (int)Math.sqrt(n) + 1; i++){
            if(n % i == 0){
                return false;
            }
        }
        return true;
    }
}
第三题:游乐园,不太会

#猿辅导笔试讨论##猿辅导笔试#
全部评论
大佬,请问一下选择题有一道程序题fun2(fun1(101))%4结果怎么得呢
点赞 回复 分享
发布于 2022-08-26 23:14 辽宁
uu,请问一下,为什么选择使用BufferedReader而不是Scanner呢?这两者有什么细节上的不同吗?
点赞 回复 分享
发布于 2022-08-27 09:31 陕西

相关推荐

10-24 11:10
山西大学 Java
若梦难了:哥们,面试挂是很正常的。我大中厂终面挂,加起来快10次了,继续努力吧。
点赞 评论 收藏
分享
1 3 评论
分享
牛客网
牛客企业服务