题解 | #密码验证合格程序#

密码验证合格程序

https://www.nowcoder.com/practice/184edec193864f0985ad2684fbc86841

import java.util.HashSet;
import java.util.Scanner;
import java.util.Set;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        while(in.hasNextLine()){
            String s = in.nextLine();
            isValidCode(s);
        }
    }

    public static boolean isRepeat(String s){
        Set<String> hashset = new HashSet<String>();
        int n = s.length();
        for(int i=0 ; i<n-3 ; ++i){
            String substring = s.substring(i,i+3);
            if(hashset.contains(substring)){
                return false;
            }
            hashset.add(substring);
        }
        return true;
    }

    public static void isValidCode(String s){
        int n = s.length();
        if(n <= 8){
            System.out.println("NG");
            return;
        }
        int[] count= new int[4]; 
        for(int i=0 ; i<n ; ++i){
            int hasNumber=0, hasLowCase=0, hasUpperCase=0, others=0;
            char c = s.charAt(i);
            int c_ascII = (int) c;
            if(count[0]+count[1]+count[2]+count[3] == 3){
                break;
            }
            if(c_ascII>=48 && c_ascII<=57){
                if(count[0] == 0){
                    ++count[0];
                }
                hasNumber = 1;
            }
            if(c_ascII>=65 && c_ascII<=90){
                if(count[1] == 0){
                    ++count[1];
                }
                hasUpperCase = 1;
            }
            else if(c_ascII>=97 && c_ascII<=122){
                if(count[2] == 0){
                    ++count[2];
                }
                hasLowCase = 1;
            }
            else if(hasNumber!=1 && hasLowCase!=1 && hasUpperCase!=1){
                if(count[3] == 0){
                    ++count[3];
                }
                others = 1;
            }
        }

        if(count[0]+count[1]+count[2]+count[3] >= 3 && isRepeat(s)){
                System.out.println("OK");
        }
        else{
            System.out.println("NG");
        }
    }
}

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务