题解 | #密码强度等级#

密码强度等级

https://www.nowcoder.com/practice/52d382c2a7164767bca2064c1c9d5361

import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        // while (in.hasNextInt()) { // 注意 while 处理多个 case
        //     int a = in.nextInt();
        //     int b = in.nextInt();
        //     System.out.println(a + b);
        // }
        String s = in.nextLine();
        char[] cs = s.toCharArray();
        int len = s.length();
        int score = 0;
        if (len <= 4) {
            score += 5;
        } else if (len >= 8) {
            score += 25;
        } else {
            score += 10;
        }

        if (!containsL(cs, len) && !containsU(cs, len)) {

        } else if ((containsL(cs, len) && !containsU(cs, len)) ||
                   (!containsL(cs, len) && containsU(cs, len))) {
            score += 10;
        } else if (containsL(cs, len) && containsU(cs, len)) {
            score += 20;
        }

        if (containsN(cs, len) == 0) {

        } else if (containsN(cs, len) == 1) {
            score += 10;
        } else if (containsN(cs, len) > 1) {
            score += 20;
        }

        if (containsO(cs, len) == 0) {

        } else if (containsO(cs, len) == 1) {
            score += 10;
        } else if (containsO(cs, len) > 1) {
            score += 25;
        }

        if (containsN(cs, len) > 0 && containsL(cs, len) && containsU(cs, len) &&
                containsO(cs, len) > 0) {
            score += 5;
        } else if (containsN(cs, len) > 0 && (containsL(cs, len) ||
                                              containsU(cs, len)) && containsO(cs, len) > 0) {
            score += 3;
        } else if (containsN(cs, len) > 0 && (containsL(cs, len) ||
                                              containsU(cs, len))) {
            score += 2;
        }

        if (score >= 90) {
            System.out.print("VERY_SECURE");
        } else if (score >= 80) {
            System.out.print("SECURE");
        } else if (score >= 70) {
            System.out.print("VERY_STRONG");
        } else if (score >= 60) {
            System.out.print("STRONG");
        } else if (score >= 50) {
            System.out.print("AVERAGE");
        } else if (score >= 25) {
            System.out.print("WEAK");
        } else if (score >= 0) {
            System.out.print("VERY_WEAK");
        }
    }

    private static boolean containsL (char[] cs, int len) {
        for (int i = 0; i < len; i++) {
            char c = cs[i];
            if (c >= 'a' && c <= 'z') {
                return true;
            }
        }
        return false;
    }
    private static boolean containsU (char[] cs, int len) {
        for (int i = 0; i < len; i++) {
            char c = cs[i];
            if (c >= 'A' && c <= 'Z') {
                return true;
            }
        }
        return false;
    }

    private static int containsN (char[] cs, int len) {
        int count = 0;
        for (int i = 0; i < len; i++) {
            char c = cs[i];
            if (c >= '0' && c <= '9') {
                count++;
            }
        }
        return count;
    }

    private static int containsO (char[] cs, int len) {
        int count = 0;
        for (int i = 0; i < len; i++) {
            char c = cs[i];
            if (c < '0' || (c > '9' && c < 'A') || (c > 'Z' && c < 'a') || c > 'z') {
                count++;
            }
        }
        return count;
    }
}

全部评论

相关推荐

09-16 14:43
已编辑
华南农业大学 游戏后端
背景&nbsp;双一流本硕&nbsp;双非大圆满&nbsp;只找游戏开发相关的岗位。&nbsp;8&nbsp;月初开始秋招到现在&nbsp;投了四五十家吧,&nbsp;目前两&nbsp;offer,&nbsp;不打算继续投了,把剩下的流程走完就开始沉淀了。目前两&nbsp;offer&nbsp;一个是网易互娱测开&nbsp;base&nbsp;广州,一个是江娱互动客户端开发&nbsp;base&nbsp;北京。应该确定网易这个了,说实话北京这个我挺想去的,这家的产品和工作氛围我了解了也不错,是那种踏实做事的,可惜我是广东人。网易的测开是调剂的二志愿,看了下有内部转岗机会,所以打算后面找个时间提前实习,沉淀下再做一个&nbsp;demo&nbsp;作品,写一些&nbsp;shader,增强下图形学渲染的能力,再学点编辑器开发。看到时候内部转岗或者春招继续投客户端开发这样。后面还能再动摇的话应该就灵犀或者腾子了吧(假如这两家确认的是客户端开发岗的话)。-----------------------补下timeline网易互娱&nbsp;测开&nbsp;8.2笔试&nbsp;&nbsp;8.21&nbsp;技术面&nbsp;&nbsp;8.29&nbsp;leader&amp;HRBP面(终面)&nbsp;9.8&nbsp;录用审核(之前一直显示面试中)9.14&nbsp;oc江娱互动&nbsp;客户端开发&nbsp;8.29主程面&nbsp;9.3&nbsp;制作人面&nbsp;9.5&nbsp;BOSS面&nbsp;9.11&nbsp;口头OC&nbsp;9.15&nbsp;正式offer后面考虑了一下&nbsp;&nbsp;感觉还是能走开发就开发吧,测开不太感兴趣,要内部活水转岗还要满1年才能申请。。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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