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

密码验证合格程序

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

const rl = require("readline").createInterface({ input: process.stdin });
var iter = rl[Symbol.asyncIterator]();
const readline = async () => (await iter.next()).value;

void async function () {

    function isRight(str)
    {
        //长度过滤
        if(str.length<=8)
        {
            return false
        }

        //过滤空格和换行
        if(str.includes(' ')||str.includes('\n'))
        {
            return false
        }

        //判断字符种类
        let index=0
        let a=/[a-z]/  //小写
        let b=/[A-Z]/  //大写
        let c=/\d/     //数字
        let d = /[^a-zA-Z\d]/;  //非字母大小写和数字

        if(str.match(a))
        {
           index++
        }
        if(str.match(b))
        {
           index++
        }
        if(str.match(c))
        {
           index++
        }
        if(str.match(d))
        {
           index++
        }

        if(index<3)
        {return false}

        //判断重复子串(是连续的)  过滤>2
        //实际只用排出长度为3的重复就行,因为3以上的重复必然包含着3
        //那么切片切出所有的len=3子串
       
       let arr=[]
        for(let i=0;i<str.length;i++)
        {
            let sub=str.substring(i,i+3)
            if(sub.length===3)//排除不足的部分
            {
                arr.push(sub)
            }
        }
       
        let end=[...new Set(arr)]

        if(end.length!=arr.length)//长度不等,说明有重复
        {
            return false
        }
        // console.log(arr,end)


      
        return true

    }

    // Write your code here
    while(line = await readline()){
     

        console.log(isRight(line)?'OK':'NG')
       
    }
}()

全部评论

相关推荐

仁者伍敌:实习生要工作经验,工作要实习经验
点赞 评论 收藏
分享
点赞 评论 收藏
分享
湫湫湫不会java:先投着吧,大概率找不到实习,没实习的时候再加个项目,然后把个人评价和荣誉奖项删了,赶紧成为八股战神吧,没实习没学历,秋招机会估计不多,把握机会。或者说秋招时间去冲实习,春招冲offer,但是压力会比较大
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-11 11:21
被夸真的超级开心,好可爱的姐姐
码农索隆:老色批们不用脑补了,我把金智妮的图找来了查看图片
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

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