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

密码验证合格程序

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

尽量简短:

  • 定义输出函数
  • 读取测试字符串
  • 按条件检查并且输出结果
    • 长度
    • 是否含有重复且不复用的 3 个字符串(3 个以上同理)
    • 检查条件 2,条件计数,配合正则表达式
const output= ok => console.log.bind(null, ok ? 'OK' : 'NG');
const NG = output(false);
const OK = output(true);

while(input = readline()) {
    if(input.length <= 8) {
        NG();
    } else {
        // 检查是否不符合条件 3
        const arr = [...input];
        if(arr.some((_, idx) => {
            if(idx + 5 >= arr.length) return false;
            if((input.slice(idx+3)).indexOf(input.slice(idx, idx+3)) !== -1) {
                return true;
            }
        })) {
            NG();
        } else {
            let count = 0;
            if(/\d/.test(input)) count++;
            if(/[a-z]/.test(input)) count++;
            if(/[A-Z]/.test(input)) count++;
            if(/[^a-zA-Z0-9 \n]/.test(input)) count++;
            count >= 3 ? OK() : NG();
        }

    }
}
全部评论

相关推荐

kl_我是东山啊:《相关公司:阿里巴巴》
投递阿里巴巴等公司10个岗位
点赞 评论 收藏
分享
zhiyog:哈哈哈,其实是津巴布韦币
点赞 评论 收藏
分享
评论
3
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务