题解 | #密码强度等级#
密码强度等级
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 () {
// Write your code here
let str;
let sum = 0;
let w = false;
let d = true;
let s = true;
let Ww = false;
while ((line = await readline())) {
str = line;
}
switch (true) {
case str.length <= 4:
sum += 5;
break;
case str.length >= 5 && str.length <= 7:
sum += 10;
break;
case str.length >= 8:
sum += 25;
break;
}
// console.log('c',sum);
switch (true) {
case str.match(/[a-z]/gi) == null:
sum += 0;
break;
case str.match(/[a-z]/g).length == str.match(/[a-z]/gi).length ||
str.match(/[A-Z]/g).length == str.match(/[a-z]/gi).length:
sum += 10;
w=true;
break;
case str.match(/[a-z]/g).length > 0 && str.match(/[A-Z]/g).length > 0:
sum += 20;
Ww = true;
break;
}
// console.log('w',sum);
switch (true) {
case str.match(/[\d]/g) == null:
sum += 0;
d = false;
break;
case str.match(/[\d]/g).length == 1:
sum += 10;
break;
case str.match(/[\d]/g).length > 1:
sum += 20;
break;
}
// console.log('d',sum);
switch (true) {
case str.match(/[^a-z0-9]/ig) == null:
sum += 0;
s = false;
break;
case str.match(/[^a-z0-9]/ig).length == 1:
sum += 10;
break;
case str.match(/[^a-z0-9]/ig).length > 1:
sum += 25;
break;
}
// console.log('s',sum);
switch (true) {
case Ww && d && s:
sum += 5;
break;
case w && d && s:
sum += 3;
break;
case w && d:
sum += 2;
break;
}
// console.log('e',sum);
let result;
switch (true) {
case sum >= 90:
result = "VERY_SECURE";
break;
case sum >= 80:
result = "SECURE";
break;
case sum >= 70:
result = "VERY_STRONG";
break;
case sum >= 60:
result = "STRONG";
break;
case sum >= 50:
result = "AVERAGE";
break;
case sum >= 25:
result = "WEAK";
break;
case sum >= 0:
result = "VERY_WEAK";
break;
}
console.log(result);
})();
查看20道真题和解析
