题解 | 密码验证合格程序

import java.util.*; 
import java.util.regex.*;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);

        while(in.hasNext()){
            String str=in.next();
            if(str.length()<=8){
                System.out.println("NG");
                continue;
            }
            if(getMatch(str)){
                System.out.println("NG");
                continue;
            }
            if(getString(str,0,3)){
                System.out.println("NG");
                continue;
            }
            System.out.println("OK");
        }
    }
    //检查是否有重复子串
    private static boolean getString(String str,int l,int r){
        if(r>=str.length())//先判断长度
            return false;
        if(str.substring(r).contains(str.substring(l,r)))//检查r后面是否含有l和r
            return true;
        else
            return getString(str,l+1,r+1);

    }

    //检查是否具有正则性
    private static boolean getMatch(String str){
        int count=0;
        Pattern p1=Pattern.compile("[A-Z]");
        if(p1.matcher(str).find()){
            count++;
        }
        Pattern p2=Pattern.compile("[a-z]");
        if(p2.matcher(str).find()){
            count++;
        }
        Pattern p3=Pattern.compile("[0-9]");
        if(p3.matcher(str).find()){
            count++;
        }
        Pattern p4=Pattern.compile("[^a-zA-Z0-9]");
        if(p4.matcher(str).find()){
            count++;
        }
        if(count>=3){
            return false;
        }else
            return true;

    }
}
  1. 新学习到的正则表达式

Pattern p1=Pattern.compile("");

p1.matcher(str).find()

全部评论

相关推荐

03-10 14:19
已编辑
重庆邮电大学 前端工程师
球Offer上岸👑:测试也难求一面 逆天
点赞 评论 收藏
分享
03-07 13:32
门头沟学院 C++
未来可欺a:读研吧,这简历只适合学历高的,本科大概率只能干开发,你这个简历开发不匹配,算法和深度学习的话学历又不够
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务