首页 > 360笔试 9月11 笔试题解

360笔试 9月11 笔试题解

总体来说挺简单的。
第一题,企业:思想:
判断一个人可能是老板:
1.这个人没有出现在给定的数据中。
2.第一个上班打卡的人。
3.最后一个下班打卡的人。
考虑以上3中情况进行判断即可
这道题骗分还是挺容易的,直接输出不在数据中的人就0.82,但是AC还需要思考一下。
思想就是你要想到,只有数据端点的人才可能是老板,然后老板之间夹着的人数一定是来工作的人数(总人数-不在数据中的人数)
import java.util.HashSet;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        int n=sc.nextInt();
        int m=sc.nextInt();
        int[][] a=new int[m][2];//0 工号, 1:  1上班 0 下班
        for (int i = 0; i < m; i++) {
            a[i][0]=sc.nextInt();
            a[i][1]=sc.nextInt();
        }
        int[] b=new int[n+1];
        int work=0;//工作人数
        int up=0;//上班打卡人数
        int down=0;//下班打卡人数
        HashSet<Integer> up_set=new HashSet<>();
        HashSet<Integer> down_set=new HashSet<>();
        //遍历统计
        for(int i=0;i<a.length;i++){
            if(a[i][1]==1){
                up_set.add(a[i][0]);
            }
            else{
                down_set.add(a[i][0]);
            }
            b[a[i][0]]+=1;
            if(b[a[i][0]]!=2) work++;
            if(a[i][1]==1) up++;
            else down++;
        }
        //记录第一个上班打卡的人
        int sta=-1;
        if(a[0][1]==1){
            sta=a[0][0];
        }
        //记录最后一个下班打卡的人
        int end=-1;
        if(a[m-1][1]==0){
            end=a[m-1][0];
        }
        //判断第一个是否是老板
        if(sta!=-1){
            //来公司的人=上班打卡的人,并且第一个上班的人不在下班集合里
            if(work==up){
                if(!down_set.contains(sta)) b[sta]=0;
            }
        }
        //判断最后一个是否是老板
        if(end!=-1){
            //来公司的人=下班打卡的人,并且最后一个下班的人不在上班集合里
            if(work==down){
                if(!up_set.contains(end)) b[end]=0;
            }
        }
        //特判:上下班打卡人数相等,且第一个人是最后一个人
        if(up==down){
            if(a[0][0]==a[m-1][0]) b[sta]=0;
        }

        StringBuilder ans=new StringBuilder();
        for (int i = 1; i < n + 1; i++) {
            if(b[i]==0){
                ans.append(i);
                if(i!=n) ans.append(" ");
            }
        }
        System.out.println(ans);
    }
}


d
第二题:判断密码复杂性: 直接ifelse即可
package com.chen.t2;


import java.util.*;

public class Main {

    public static void main(String[] args) {
        Scanner in=new Scanner(System.in);
        while(in.hasNext()){
            String s=in.next();
            System.out.println(fx(s));
        }

    }
    public static String fx(String s){
        String ans1="Ok";
        String ans2="Irregular password";
        char[] sc=s.toCharArray();
        int n=sc.length;
        int[] t_a=new int[5];
        //0:数字 1:大写字母 2:小写字母  :3 特殊字符 4:长度>=8
        if(n>=8) t_a[4]=1;//长度
        char[] a={'~','!','@','#','$','%','^','&','*','(',')','_','+','='
        ,'`','-','=','[',']','{','}','|','\\',';',':','\'','"',',','<','.','>','/','?'};
//        HashSet<Character> spe_c=new HashSet<Character>(a);
        for (int i = 0; i < n; i++) {
            char c=sc[i];
            if(c>='0'&&c<='9') t_a[0]=1;
            else if(c>='A'&&c<='Z') t_a[1]=1;
            else if(c>='a'&&c<='z') t_a[2]=1;
            else {
                for(int j=0;j<a.length;j++){
                    if(c==a[j]) {
                        t_a[3]=1;
                        break;
                    }
                }
            }
        }
        for (int i = 0; i < t_a.length; i++) {
            if(t_a[i]==0){
                return ans2;
            }
        }
        return ans1;

    }
}


全部评论

(3) 回帖
加载中...
话题 回帖

相关热帖

历年真题 真题热练榜 24小时
技术(软件)/信息技术类
查看全部

近期精华帖

热门推荐