题解 | #密码强度等级#
密码强度等级
https://www.nowcoder.com/practice/52d382c2a7164767bca2064c1c9d5361
const rl = require("readline").createInterface({ input: process.stdin }); var iter = rl[Symbol.asyncIterator](); const readline = async () => (await iter.next()).value; void async function () { const secret = await readline(); let res = secret.length>=8?25:secret.length>=5?10:5;//密码长度 const letter = [0,0]; let numberCnt = 0,signCnt = 0; for(const c of secret){ //字母 if(c>="a"&&c<="z") letter[0] = 10; else if(c>="A"&&c<="Z") letter[1] = 10; else if(c>="0"&& c<="9") numberCnt++; else if((c.charCodeAt()>=0x21&&c.charCodeAt()<=0x2F)||(c.charCodeAt()>=0x3A&&c.charCodeAt()<=0x40)||(c.charCodeAt()>=0x5B&&c.charCodeAt()<=0x60)||(c.charCodeAt()>=0x7B&&c.charCodeAt()<=0x7E))signCnt++; } res+=letter.reduce((pre,cur)=>pre+cur);//字母 res+=numberCnt>1?20:numberCnt>0?10:0;//数字 res+=signCnt>1?25:signCnt>0?10:0;//符号 if(signCnt && numberCnt){ if(letter.reduce((pre,cur)=>pre+cur)===20){ res += 5;//5 分: 大小写字母、数字和符号 }else if(letter.reduce((pre,cur)=>pre+cur)===10){ res += 3;//3 分: 字母、数字和符号 } }else if(numberCnt && letter.reduce((pre,cur)=>pre+cur)>0){ res+=2;//2 分: 字母和数字 } const rank = [[90,"VERY_SECURE"],[80,"SECURE"],[70,"VERY_STRONG"],[60,"STRONG"],[50,"AVERAGE"],[25,"WEAK"],[0,"VERY_WEAK"]]; for(const [score,output] of rank){ if(res >= score) return console.log(output); } }()
华为OD,我昵称“od400” 文章被收录于专栏
华为OD机试刷题历程,因涉及华为权益,牛客不允许更新了。我昵称“od400”,某博客继续更新。