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; } }