首页 > 试题广场 >

密码强度检查

[编程题]密码强度检查
  • 热度指数:1551 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
\hspace{15pt}在网络安全中,评估密码的强度是重要的基本操作。请根据给定的密码字符串,判断其强度级别。
\hspace{15pt}强度评估规则如下:
\hspace{23pt}\bullet\, 如果密码长度小于 8,则强度为 \texttt{Weak}
\hspace{23pt}\bullet\, 否则,检查密码中包含的字符类型(共四种):小写字母(\texttt{a-z})、大写字母(\texttt{A-Z})、数字(\texttt{0-9})和特殊字符(非字母、非数字的可见字符);
\hspace{23pt}\bullet\, 如果包含所有四种类型,则强度为 \texttt{Strong}
\hspace{23pt}\bullet\, 如果包含正好三种类型,则强度为 \texttt{Medium}
\hspace{23pt}\bullet\, 其他情况,强度为 \texttt{Weak}

\hspace{15pt}现在,给定多个密码字符串,请为每个密码输出其强度级别。

【名词解释】
\hspace{15pt}可见字符集为 ASCII 码在 33126 范围内的可见字符。您可以参阅下表获得其详细信息(您可能关注的内容是,这其中不包含空格、换行)。

../图片/AllAscii.png

输入描述:
\hspace{15pt}每个测试文件均包含多组测试数据。第一行输入一个整数 T\left(1\leqq T\leqq 100\right) 代表数据组数,每组测试数据描述如下:
\hspace{15pt}在一行上输入一个由可见字符集构成的字符串 s \left(1 \leqq {\rm length}(s) \leqq 20\right),表示密码。


输出描述:
\hspace{15pt}对于每一组测试数据,新起一行。输出一个字符串,表示该密码的强度级别(\texttt{Strong}\texttt{Medium}\texttt{Weak})。
示例1

输入

3
Abc123!@
abc123
Password1!

输出

Strong
Weak
Strong
头像 Silencer76
发表于 2025-08-25 20:47:35
精华题解 题目链接 密码强度检查 题目描述 评估密码字符串 的强度,规则如下: 如果密码长度小于 8,则强度为 Weak。 否则,检查密码中包含的字符类型(小写字母、大写字母、数字、特殊字符): 包含所有四种类型,强度为 Strong。 包含正好三种类型,强度为 Medium。 其他情况(一或两种),强 展开全文
头像 饥饿的中国人offer多多
发表于 2025-08-28 20:08:29
import java.util.Scanner; // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main { public static void main(String[] args) { Scanner in = 展开全文
头像 雾隐游龙
发表于 2025-08-26 17:42:43
#include <iostream> #include<string> using namespace std; int main() { int t; cin>>t; for(int i=0;i<t;i++) { 展开全文
头像 ikatt
发表于 2025-09-13 21:21:26
import sys def func(strs): num2char = ['Weak','Weak','Weak','Medium','Strong'] # 类型数量 --> 字符 keys=[0]*4 if len(strs)<8: 展开全文
头像 fredstar
发表于 2025-09-22 20:48:20
def passwlevel(s): n = len(s) level = "Weak" if n<8: return level key = set() for i in s: ordi = ord( 展开全文
头像 横竖撇捺子
发表于 2025-08-23 09:56:16
import java.util.Scanner; import java.util.HashSet; import java.util.Set; // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main { public static 展开全文
头像 孙万同
发表于 2025-09-19 16:31:48
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); int T 展开全文
头像 Undefined_er
发表于 2025-09-27 18:55:59
package main import ( "fmt" ) func main() { var n int var str string fmt.Scan(&n) for i := 0; i < n; i++ { fmt.Scan(&str 展开全文
头像 M42
发表于 2025-11-06 11:44:45
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); 展开全文
头像 柯南现身
发表于 2025-08-29 10:15:31
# 接收来自命令行输入的数据 def receive_strings(): num = int(input()) # 创建一个字典动态存储输入的字符串 strings_dict = {} # 读取字符串输入 for i in range(num): 展开全文
头像 牛客363011858号
发表于 2025-08-29 10:39:41
def password_strength(s: str) -> str: if len(s) < 8: return "Weak" types = [0] * 4 for ch in s: if ch.isl 展开全文