密码验证合格程序

题目描述

  密码要求:

  1.长度超过8位

  2.包括大小写字母.数字.其它符号,以上四种至少三种

  3.不能有相同长度超2的子串重复

输入描述

  一组或多组长度超过2的子符串。每组占一行

输出描述

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

输入例子

021Abc9000
021Abc9Abc1
021ABC9000
021$bc9000

输出例子

OK
NG
NG
OK

测试代码

 1 import java.util.Scanner;
 2
 3 public class Main {
 4     // 长度超过8位
 5     public static boolean checkLength(String password) {
 6         if(password.equals(null) || password.length() <= 8){
 7             return false;
 8         }
 9         return true;
10     }
11     // 包括大小写字母.数字.其它符号,以上四种至少三种
12     public static boolean checkCharKinds(String password) {
13         int uppercase = 0, lowercase = 0, digit = 0, other = 0;
14         char[] ch = password.toCharArray();
15         for(int i = 0; i < password.length(); i++) {
16             if(Character.isUpperCase(ch[i])) {
17                 uppercase = 1;
18             } else if(Character.isLowerCase(ch[i])) {
19                 lowercase = 1;
20             } else if(Character.isDigit(ch[i])) {
21                 digit = 1;
22             } else {
23                 other = 1;
24             }
25         }
26         if(uppercase + lowercase + digit + other >= 3) {
27             return true;
28         }
29         return false;
30     }
31     // 不能有相同长度超2的子串重复
32     public static boolean checkCharRepeat(String password) {
33         for(int i = 0; i < password.length() - 2; i++) {
34             String str = password.substring(i, i + 3);
35             for(int j = i + 1; j < password.length() - 2; j++) {
36                 if(password.substring(j).contains(str)) {
37                     return false;
38                 }
39             }
40         }
41         return true;
42     }
43
44     public static void main(String[] args) {
45         Scanner sc = new Scanner(System.in);
46         while (sc.hasNextLine()) {
47             String password = sc.nextLine();
48             if(checkLength(password) && checkCharKinds(password) && checkCharRepeat(password)){
49                 System.out.println("OK");
50             } else {
51                 System.out.println("NG");
52             }
53         }
54         sc.close();
55     }
56 }
时间: 2024-10-14 05:25:42

密码验证合格程序的相关文章

1-20密码验证合格程序

题目描述 密码要求: 1.长度超过8位 2.包括大小写字母.数字.其它符号,以上四种至少三种 3.不能有相同长度超2的子串重复 说明:长度超过2的子串 输入描述: 一组或多组长度超过2的子符串.每组占一行 输出描述: 如果符合要求输出:OK,否则输出NG 输入例子: 021Abc9000 021Abc9Abc1 021ABC9000 021$bc9000 输出例子: OK NG NG OK 代码:import java.util.*;public class Main{ public stati

华为oj之密码验证合格程序

密码要求: 1.长度超过8位 2.包括大小写字母.数字.其它符号,以上四种至少三种 3.不能有相同长度超2的子串重复 判断字符类型时采用位标记,判断重复子串时使用动态规划 import java.util.Scanner; public class Main{ public static void main(String[] args){ Scanner sc=new Scanner(System.in); while(sc.hasNext()) { String pwd=sc.nextLine

密码验证合格程序(Python)

题目描述 密码要求: 1.长度超过8位 2.包括大小写字母.数字.其它符号,以上四种至少三种 3.不能有相同长度超2的子串重复 说明:长度超过2的子串 输入描述: 一组或多组长度超过2的子符串.每组占一行 输出描述: 如果符合要求输出:OK,否则输出NG 示例1 输入 021Abc9000 021Abc9Abc1 021ABC9000 021$bc9000 输出 OK NG NG OK 来源:https://www.nowcoder.com/practice/184edec193864f0985

28:密码验证合格

题目描述 密码要求: 1.长度超过8位 2.包括大小写字母.数字.其它符号,以上四种至少三种 3.不能有相同长度超2的子串重复 说明:长度超过2的子串 输入描述:一组或多组长度超过2的子符串.每组占一行 输出描述:如果符合要求输出:OK,否则输出NG 输入例子: 021Abc9000 021Abc9Abc1 021ABC9000 021$bc9000 输出例子: OK NG NG OK 1 package prctice01; 2 3 import java.util.Scanner; 4 5

接上篇 OPENVPN 证书+简单密码验证+防火墙策略

还是先介绍下环境 外网pc客户端  119.119.119.119 内网出口IP    112.112.112.112 openvpn服务器 192.168.0.250 openVPN ip池  172.18.1.0/24 内网服务器    192.168.0.1 安装步骤请参考之前文章,或者tar包下载源码安装即可. 配置支持用户名密码验证 服务器端配置文件: ###cat server.conf local 192.168.0.250  监听本地IP port 11940          

ssh-key 免密码验证分发、管理、备份指南笔记02

ssh-key 免密码验证分发.管理.备份指南02 1.备份需求分析 要求所有服务器在同一用户xiaoping系统用户下,实现B.A机器从本地备份数据到C机器上,在备份过程 中不需要C的提示系统密码验证. 即实现从A.B服务器备份数据到Z备份存储服务器的免密码登陆验证的解决方案 备份数据流方式如下: A--->C B-->C 想想比喻,即多把钥匙(A\B)开一把锁(C) 2.生成密钥对 [[email protected] ~]$ ssh-keygen -t dsa Generating pu

&#8203;实现以账号密码验证的VPN服务器

声明 作者:昨夜星辰 博客:http://yestreenstars.blog.51cto.com/ 本文由本人创作,如需转载,请注明出处,谢谢合作! 目的 实现以账号密码验证的VPN服务器. 环境 服务端:CentOS 6.2 32 客户端:Windows XP 服务端配置 # 关闭SELinux sed -i '/^SELINUX\b/s/=.*/=disabled/' /etc/selinux/config setenforce 0 # 安装mysql-server yum -y inst

WebService带用户名密码验证(复习用)

在项目开发的过程中,WebService是经常要用的,当调用WebService方法时,需要经过服务的验证才可以调用,一般就是用户名/密码验证,还有一个就是证书.下面程序使用的是用户名/密码的方式,很简单的一个程序. 先看服务端的代码(ws_Service) MySoapHeader.cs 这里通过继承SoapHeader实现对用户名/密码的验证 public class MySoapHeader:System.Web.Services.Protocols.SoapHeader { privat

一个合格程序员应该知道的8个IT基础设施术语

IT基础设施正在迅速改变.具体地说,它正在被虚拟化."软件定义"是IT基础设施最大的趋势之一,不仅用于计算,还包括存储和网络. 开发人员应该了解这些概念,以便了解应用程序运行的环境.熟悉这些术语也有助于避免与IT运维人员对话时产生混淆. 以下是一些常见术语. 组合式基础设施(Composable infrastructure)--允许个体通过API"组合"基础设施,从而达到需求.例如,开发人员可以组合特定于应用程序的基础设施,以适应移动或物联网开发.可组合的基础设施