当前位置: 首页 > news >正文

d4ut2tcl_题解:P12278 [蓝桥杯 2024 国 Python A] 设置密码

很毒瘤的判断

思路

先输入 $T$,接着循环 $T$ 次,每次输入一行字符串,遍历字符串,记录大写字母、小写字母、数字、特殊字符的数量。特别的,特殊字符串说的是种类,不是个数,所以要用 set 或 map。最后照着题意判断。时间复杂度是 $O(Tn\log n)$,可以通过本题数据。

AC code

  • c++
#include<bits/stdc++.h>
using namespace std;
int t;
string s;
int main(){cin>>t;cin.ignore();//清空换行while(t--){getline(cin,s);//一次读入一行,防止有空格(提交了好几次才发现)int big=0,sma=0,num=0;//记录set<char> els;//题目是说“种类”,不是个数(提交了好几次才发现)if(s.length()<6){//不符合条件直接跳出cout<<"0\n";continue;}int f=0;for(char c: s){if('A'<=c&&c<='Z') big++;else if('a'<=c&&c<='z') sma++;else if('0'<=c&&c<='9') num++;else if(c=='~'||c=='!'||c=='@'||c=='#'||c=='$'||c=='%'||c=='^'||c=='&'||c=='*'||c=='('||c==')'||c=='_')els.insert(c);else{f=1;//不符合条件直接跳出break;}}if(f){cout<<"0\n";continue;}//计算种类int z=0;if(big) z++;if(sma) z++;if(num) z++;if(!els.empty()) z++;//判断if((z==4||(z==3&&els.size()>=3))&&s.length()>=12){//z==4的时候,特殊字符不一定是>=3cout<<"3\n";continue;}if(z>=2&&s.length()>=8){cout<<"2\n";continue;}cout<<"1\n";}return 0;
}
  • python
import sysdef main():t = int(sys.stdin.readline())for _ in range(t):s = sys.stdin.readline().strip()# 长度检查if len(s) < 6:print(0)continue# 初始化标志has_upper = Falsehas_lower = Falsehas_digit = Falsespecials = set()valid = True# 检查每个字符for c in s:if 'A' <= c <= 'Z':has_upper = Trueelif 'a' <= c <= 'z':has_lower = Trueelif '0' <= c <= '9':has_digit = Trueelif c in {'~', '!', '@', '#', '$', '%', '^', '&', '*', '(', ')', '_'}:specials.add(c)else:valid = Falsebreak# 非法字符检查if not valid:print(0)continuehas_special = len(specials) > 0type_count = sum([has_upper, has_lower, has_digit, has_special])special_count = len(specials)# 密码强度判断if len(s) >= 12:# 强密码条件1: 包含全部四种类型strong1 = has_upper and has_lower and has_digit and has_special# 强密码条件2: 包含三种类型(含特殊字符)且特殊字符种类≥3strong2 = type_count >= 3 and has_special and special_count >= 3if strong1 or strong2:print(3)continueif len(s) >= 8 and type_count >= 2:print(2)continueprint(1)if __name__ == "__main__":main()

本人为 c 党,python 代码是 deepseek 帮我改写的,如有错误,请谅解。
代码来之不易,给个赞呗。

http://www.jsqmd.com/news/703375/

相关文章:

  • 宠物寄养民宿淡旺季定价对应盈亏智能测算表制作。
  • VS Code MCP插件开发速成:从零部署到生产级发布,3天掌握2026最新MCP v2.4协议栈
  • Postman汉化+历史版本双需求?这篇保姆级教程一次搞定(含官方源下载避坑点)
  • 别再到处找教程了!CREO 2.0 M040 保姆级安装与配置指南(含虚拟光驱、许可证配置、常见报错解决)
  • 2026年高性价比园林水景厂家,林盛石业施工服务靠谱吗 - mypinpai
  • ARM调试寄存器DBGWFAR与DBGVCR详解与应用
  • Qwen3-4B-Thinking开源部署:Gradio+Transformers全栈开源组件解析
  • 从实对称到Hermite矩阵:量子计算与机器学习中的复数内积与共轭转置指南
  • 分布式id
  • Terraform进阶实战:模块化设计、状态管理与CI/CD集成
  • 告别月结焦虑:手把手教你用CKMLCP和CKMVFM搞定SAP物料成本差异分摊(附避坑清单)
  • 分析福莱科斯与竞争对手相比如何,在深圳地区口碑靠谱吗 - 工业设备
  • 避坑指南:Checkmarx安装失败?从‘重新检查必要条件’报错到成功激活的完整排错手册
  • ESP32+Arduino IDE连接OneNET MQTT保姆级教程:从创建产品到数据上云全流程
  • 从‘灰箱’到决策:灰色综合评价在项目风险评估中的实战应用
  • 从T4到V100:我的YOLO训练效率翻倍实战(附完整环境配置与显存调优心得)
  • 保姆级教程:用ISCE 2.6和MintPy 1.5.1搞定Sentinel-1时序InSAR分析(附完整配置文件)
  • AI Summit London 2022门票获取全攻略
  • PathOfBuilding:流放之路玩家的终极角色构建神器
  • 把老旧电动幕布接入HomeKit或米家:ESP8266+ESPHome的另类玩法(无需Home Assistant)
  • 告别噪音!手把手教你用ESP32C3的I2S驱动PCM5102A播放高品质音频(附完整Arduino代码)
  • 从ISO 226标准到代码:深入解读A计权为什么成了环境噪声测量的‘金标准’
  • Hadoop 3.x HA配置避坑指南:从ZooKeeper设置到自动故障转移,一次讲清楚
  • 基于Open WebUI Pipelines集成RagFlow:打造专业级RAG应用交互界面
  • 保姆级教程:手把手配置车载以太网PHY的主从模式(以常见T1 PHY为例)
  • LangGraph生态全景与实战:构建可靠智能体应用指南
  • 别再死磕MPC了!聊聊NMPC在非光滑路径(比如ROS栅格地图)下的实战优势
  • 如何在Godot引擎中实现专业级2D骨骼动画:Spine Runtime完整指南
  • C语言刷题避坑指南:从牛客网BC30-BC39这10道题里,我总结的5个新手必踩的坑
  • ISP模块故障导致相机竖线?手把手教你从Sensor到ISP的完整图像问题排查流程