题解 | #密码验证合格程序#
密码验证合格程序
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') } }()