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

密码验证合格程序

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");
        }
    }
}

全部评论

相关推荐

03-03 23:12
已编辑
北京邮电大学 Java
书海为家:我来给一点点小建议,因为毕竟还在学校不像工作几年的老鸟有丰富的项目经验,面试官在面试在校生的时候更关注咱们同学的做事逻辑和思路,所以最好在简历中描述下自己做过项目的完整过程,比如需求怎么来的,你对需求的解读,你想到的解决办法,遇到困难如何找人求助,最终项目做成了什么程度,你从中收获了哪些技能,你有什么感悟。
你的简历改到第几版了
点赞 评论 收藏
分享
03-16 11:07
南开大学 Java
牛马人的牛马人生:快手卡实习经历的
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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