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