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;
}
}
网易游戏公司福利 566人发布

查看2道真题和解析