最右笔试-Java-2022/7/26

时间:90分钟
选择题:15个,有点恶心,因为它全是不定项选择题,没给你区分单选还是多选
简单题:2个(有点恶心,不会做)
            1.WebSocket 和Socket的区别
            2.有关操作系统磁盘计算的问题,问题是:一个磁盘有500个柱面,每个柱面有200个磁道,每个磁道有10个扇区,每个扇区10B,计算和它相关的东西
编程题:
            1.子串问题,我还以为要用使用KMP算法,我不会,直接暴力遍历,结果也都过了,看来这个题就不太考虑效率问题
import java.util.*;
public class Main{
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        int n=sc.nextInt();
        String[] speGenes=new String[n];
        sc.nextLine();
        for(int i=0;i<n;i++){
            speGenes[i]=sc.nextLine();
        }
        int m=sc.nextInt();
        sc.nextLine();
        String gene;
        boolean flag;
        for(int i=0;i<m;i++) {
            gene=sc.nextLine();
            flag=false;
            for(int j=0;j<n;j++) {
                if(isSuperMan(speGenes[j],gene)) {
                    System.out.println("A new hero discovered");
                    flag=true;
                    break;
                }
            }
            if(!flag) System.out.println("Just an ordinary person");
        }
    }
    
    public static boolean isSuperMan(String special,String gene) {
        if(special.length()>gene.length()) {
            return false;
        }
        if(special.length()==gene.length()) return special.equals(gene);
        for(int i=0;i<=(gene.length()-special.length());i++) {
            int temp=i;
            boolean flag=true;
            for(int j=0;j<special.length();j++) {
              if(gene.charAt(temp++)!=special.charAt(j)) {
                  flag=false;break;
              }
            }
            if(flag) return true;
        }
        return false;
    }
}


            2.般家问题,就是有n天,有两个搬家公司,每个公司在不同天的可用车不同,但A,B公司切换时,中间必须空一天。我用dp做的,但只有80%的通过率。

import java.util.*;
import java.io.*;
public class Main{
    public static void main(String[] args) {
        Scanner sc=new Scanner(new BufferedInputStream(System.in));
        int n=sc.nextInt();
        for(int i=0;i<n;i++) {
            int m=sc.nextInt();
            int[] a=new int[m];
            int[] b=new int[m];
            for(int j=0;j<m;j++) {
                a[j]=sc.nextInt();
            }
            for(int j=0;j<m;j++) {
                b[j]=sc.nextInt();
            }
            System.out.println(getMax(a,b,m));
        }
    }
    
    public static int getMax(int[] a,int[] b,int m) {
        int[] dpa=new int[m+1];
        dpa[0]=0;dpa[1]=a[0];
        int[] dpb=new int[m+1];
        dpb[0]=0;dpb[1]=b[0];
        for(int i=2;i<=m;i++) {
            dpa[i]=a[i-1]+Math.max(dpa[i-1],dpb[i-2]);
            dpb[i]=b[i-1]+Math.max(dpb[i-1],dpa[i-2]);
        }
        return Math.max(dpa[m],dpb[m]);
    }
    
}




全部评论
大佬
点赞 回复 分享
发布于 2022-07-26 22:30
第二题一模一样
点赞 回复 分享
发布于 2022-07-26 21:26
选择简答确实恶心
点赞 回复 分享
发布于 2022-07-26 21:13

相关推荐

感觉今年拿到大厂实习offer的人很多,光是身边同学室友都是好几个offer。由此可见,秋招得有多卷
小浪_Coding:必须卷的起飞, 应该比25更卷一点, 25已经是哀声一片了, 26会更难一点, 现在还有`很多25未找到的
点赞 评论 收藏
分享
评论
5
9
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务