【免费题库】华为OD机试 - 密码输入检测(Java & JS & Python & C & C++)
题目描述:
输入一个密码字符串,密码的长度至少是6,且包含大写、小写字母和数字。请判断输入的密码是否符合要求。如果符合要求,返回"OK",否则返回"NG"。
输入描述:
输入一个密码字符串。
输出描述:
输出是否符合要求,"OK"或"NG"。
解决方案:
这个问题可以通过编写一个函数来解决,该函数接收一个字符串作为参数,并检查该字符串是否至少有6个字符长,包含至少一个大写字母、一个小写字母和一个数字。
以下是使用不同编程语言的解决方案:
- Java 解法:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String password = scanner.nextLine();
System.out.println(checkPassword(password) ? "OK" : "NG");
}
public static boolean checkPassword(String password) {
if (password == null || password.length() < 6) {
return false;
}
boolean hasUpper = false, hasLower = false, hasDigit = false;
for (char c : password.toCharArray()) {
if (Character.isUpperCase(c)) {
hasUpper = true;
} else if (Character.isLowerCase(c)) {
hasLower = true;
} else if (Character.isDigit(c)) {
hasDigit = true;
}
}
return hasUpper && hasLower && hasDigit;
}
}
- JavaScript 解法:
const readline = require('readline');
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
rl.question('Enter password: ', (password) => {
console.log(checkPassword(password) ? "OK" : "NG");
rl.close();
});
function checkPassword(password) {
if (password.length < 6) {
return false;
}
let hasUpper = false, hasLower = false, hasDigit = false;
for (let char of password) {
if (char.toUpperCase() !== char) {
hasUpper = true;
} else if (char.toLowerCase() !== char) {
hasLower = true;
} else if (!isNaN(parseInt(char))) {
hasDigit = true;
}
}
return hasUpper && hasLower && hasDigit;
}
- Python 解法:
def check_password(password):
if len(password) < 6:
return False
has_upper = False
has_lower = False
has_digit = False
for char in password:
if char.isupper():
评论已关闭