【2020.02.21】算法学习记录——密码检验合格程序

算法-密码检验合格程序


说明:长度超过2的子串

输入描述:
一组或多组长度超过2的子符串。每组占一行

输出描述:
如果符合要求输出:OK,否则输出NG

示例1
输入:
021Abc9000
021Abc9Abc1
021ABC9000
021$bc9000

输出:
OK
NG
NG
OK

来源:牛客网

import java.util.*;
public class Main{
    public static void main(String[] args){
        Scanner input = new Scanner(System.in);
        while (input.hasNext()){
            String code = input.nextLine();
            System.out.println(validCode(code));
        }
        input.close();
    }

    public static String validCode(String code){
        String result = "";
        if(validContains(code) && validLength(code) && validDuplicate(code)){
            result = "OK";
        }
        else{result = "NG";}
        return  result;
    }

    public static boolean validDuplicate(String code)
    {
        for(int i = 0; i < code.length()-3; i++){
            if(code.substring(i+3).contains(code.substring(i,i+3))){
                return false;
            }
        }
        return true;
    }

    public static boolean validContains(String code){
        boolean vaild = false;
        int upper = 0; int lower = 0; int num = 0; int character = 0;
        for(int i = 0; i < code.length(); i++){
            if(Character.isUpperCase(code.charAt(i))){upper = 1;}
            else if(Character.isLowerCase(code.charAt(i))){lower = 1;}
            else if(Character.isDigit(code.charAt(i))){num = 1;}
        }
        String removeCharacter = code.replaceAll("[^a-zA-Z0-9]","");
        if(removeCharacter.length() < code.length()){
            character = 1;
        }
        if(upper + lower + num + character >= 3){
            vaild = true;
        }
        return vaild;
    }

    public static boolean validLength(String code){
        boolean valid = false;
        int len = code.length();
        if(len > 8){valid = true;}
        else{valid = false;}
        return valid;
    }
}

笔记:
在一个String中截取子串的方法:
string.substring(int beginIndex)截取从beginIndex直到结尾。

string.substring(int beginIndex, int endIndex)截取部分字串。
举例 : "Chaitanya".substring(2,5);返回"ait". 区间左开右闭

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值