【360笔试】2022/3/19 笔试算法题记录

1.验证密码复杂性

题目大意:验证输入的密码是否符合复杂性规则
1.要求满足少于八位
2.有数字
3.有小写字母
4.有大写字母
5.有特殊字符

import java.util.*;

public class Main{
    public static void main(String[] args){
        Scanner input = new Scanner(System.in);
        while(input.hasNext()){
            String psw = input.next();
            if(isOk(psw)){
                System.out.println("Ok");
            }else{
                System.out.println("Irregular password");
            }
        }
    }
    
    public static boolean isOk(String psw){
        if(psw.length()<8)
            return false;
        boolean rule1=true,rule2=true,rule3=true,rule4=true;
        
        for(char c:psw.toCharArray()){
            if(c>='0' && c<='9')
                rule1=false;
            else if(c>='a'&& c<='z')
                rule2=false;
            else if(c>='A'&& c<='Z')
                rule3=false;
            else if(c>=0 && c<=127)
                rule4=false;
            
            if(!rule1 && !rule2 && !rule3 && !rule4)
                return true;
        }
        return false;
    } 
}

2.黑白翻转

题目大意:n个棋子(<10^18),q次输入,每次输入两个数start、end,翻转[start,end]区间内棋子颜色,黑变白,白变黑。初始都为黑,每反转一轮输出一次黑子个数。难点在会卡int,卡时间。

import java.util.*;

public class Main{
    public static void main(String[] args){
        Scanner input = new Scanner(System.in);
        long n =input.nextLong();
        int q=input.nextInt();
        ArrayList<Long> list = new ArrayList<>();
        
        for(int i =0;i<q;i++) {
        	long start=input.nextLong()-1;
        	long end=input.nextLong();
        	
        	list.add(start);
        	list.add(end);
        	
        	Collections.sort(list);
        	long result=n;
        	int size=list.size();
        	for(int j=0;j<size-1;j++) {
        		if(j%2==0) {
        			long temp = list.get(j+1)-list.get(j);
        			result=result-temp;
        		}
        	}
        	System.out.println(result);
        } 
    }
}
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值