• 密码验证合格程序


    描述

    密码要求:

    1.长度超过8位

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

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

    说明:长度超过2的子串

    知识点 字符串,数组
    运行时间限制 0M
    内存限制 0
    输入

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

    输出

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

    每行输出对应一组输入的结果;

    样例输入 021Abc9000 021Abc9Abc1 021ABC9000 021$bc9000
    样例输出 OK NG NG OK
     
    package com.oj;
    
    import java.util.Scanner;
    
    public class TestOj {
    	public static void test(String str){
    		boolean flag = false;
    		boolean[] flags = new boolean[4];
    		boolean flag2 = false;
    		boolean flag3 = false;
    		//System.out.println(flags[0]);
    		if(str.length()>8)
    			flag = true;
    		for(int i = 0;i < str.length(); i++){
    			if(str.charAt(i)<='9'&&str.charAt(i)>='0')
    				flags[0] = true;
    			else if(str.charAt(i)>='a'&&str.charAt(i)<='z'){
    				flags[1] = true;
    			}else if(str.charAt(i)>='A'&&str.charAt(i)<='Z'){
    				flags[2] = true;
    			}else 
    				flags[3] = true;
    		}
    		int count = 0;
    		for(int i = 0;i < 4; i++){
    			if(flags[i]==true)
    				count++;
    		}
    		if(count>=3)
    			flag2 = true;
    		
    		for(int length = 2;length < str.length(); length++){
    			if(flag3==true)
    				break;
    			for(int i = 0;i < str.length()-length+1; i++){
    				String tempbase = str.substring(i, i+length);
    				//System.out.println(tempbase);
    				StringBuilder copy = new StringBuilder(str.substring(0,i));
    				copy.append(str.substring(i+length, str.length()));
    				String use = copy.toString();
    				if(use.contains(tempbase)){
    					flag3 = true;
    					break;
    				}
    					
    			}
    		}
    		
    		//System.out.println(flag+" "+flag2+" "+flag3);
    		if(flag==true&&flag2==true&&flag3==false)
    			System.out.println("OK");
    		else
    			System.out.println("NG");
    	}
    	
    	public static void main(String[] args) {
    		Scanner in = new Scanner(System.in);
    		String str = in.nextLine();
    		while(str!=null){
    			test(str);
    			str = in.nextLine();
    		}
    		
    	}
    }
    

      

    态度决定高度,细节决定成败,
  • 相关阅读:
    查询数据库锁的SQL
    注解学习实例(模拟hibernate,table,column注解,拼装SQL)
    mongoDB学习笔记
    拼装SQL.例子
    MySQL实现类似Oracle序列的函数
    面试总结
    linux下常用命令
    PHP 中 flush() 与 ob_flush() 的区别
    PHP 使用共享内存的资料
    移动设备的web站开发和将web封转成移动端应用的一些资料
  • 原文地址:https://www.cnblogs.com/lxk2010012997/p/5341126.html
Copyright © 2020-2023  润新知