[编程题]密码验证合格程序(java)

2 篇文章 0 订阅

密码要求:
1.长度超过8位
2.包括大小写字母.数字.其它符号,以上四种至少三种
3.不能有相同长度大于等于2的子串重复
输入描述:
一组或多组长度超过2的子符串。每组占一行
输出描述:
如果符合要求输出:OK,否则输出NG

示例1
输入在这里插入图片描述

题目链接
分析:
1.通过字符串读取输入的数据,读到后判断长度,如果长度小于等于8,则不满足。
2.对于字符串中的每个字符,进行判断,如果不满足3个及以上类型,则不满足
3.题目要求不能有大于等于2的相同字符串,那么我们每次截取长度为3的字符串,与它相邻长度为3的字符串比较,如果有相同的,则不满足。
代码:

import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        while (scanner.hasNextLine()) {
            String s = scanner.nextLine();
            char arr[] = s.toCharArray();
            int a = 0;
            int b = 0;
            int c = 0;
            int d = 0;
            //每读到一种类型,就加一
            for(int i = 0; i<arr.length; i++) {
              if(arr[i]>='0'&&arr[i]<='9') {
                  a = 1;
              }
              else if(arr[i]>='a'&&arr[i]<='z') {
                  b = 1;
              }
              else if(arr[i]>='A'&&arr[i]<='Z') {
                  c = 1;
              }else {
                  d = 1;
              }
            }
            boolean e = false;
            for(int i = 0; i<s.length()-3; i++) {
                for(int j = i+1; j<s.length()-3; j++) {
                    if(s.substring(i,i+3).equals(s.substring(j,j+3))){
                       e = true;
                    }
                }
            }
            if(e==true||s.length()<=8||a+b+c+d<3){//如果有一个不满足,则输出"NG"
                System.out.println("NG");
            }else{
                System.out.println("OK");
            }
        }
    }
}

在这里插入图片描述
如果觉得有帮助,帮忙点个赞哦。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值