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

csp信奥赛C++高频考点专项训练之字符串 --【字符统计】:密码合规

csp信奥赛C++高频考点专项训练之字符串 --【字符统计】:密码合规

题目描述

网站注册需要有用户名和密码,编写程序以检查用户输入密码的有效性。合规的密码应满足以下要求 :

  1. 只能由a ∼ z \texttt a \sim \texttt zaz之间26 2626个小写字母、A ∼ Z \texttt A \sim \texttt ZAZ之间26 2626个大写字母、0 ∼ 9 0 \sim 909之间10 1010个数字以及!@#$四个特殊字符构成。

  2. 密码最短长度: 6 :6:6个字符,密码最大长度: 12 :12:12个字符。

  3. 大写字母,小写字母和数字必须至少有其中两种,以及至少有四个特殊字符中的一个。

输入格式

输入一行不含空格的字符串。约定长度不超过100 100100。该字符串被英文逗号分隔为多段,作为多组被检测密码。

输出格式

输出若干行,每行输出一组合规的密码。输出顺序以输入先后为序,即先输入则先输出。

输入输出样例 1
输入 1
seHJ12!@,sjdkffH$123,sdf!@&12HDHa!,123&^YUhg@!
输出 1
seHJ12!@ sjdkffH$123
说明/提示

【样例 1 解释】

输入被英文逗号分为了四组被检测密码:seHJ12!@sjdkffH$123sdf!@&12HDHa!123&^YUhg@!。其中sdf!@&12HDHa!长度超过 12 个字符,不合规;123&^YUhg@!包含四个特殊字符之外的字符不合规。

思路分析

本题要求从一行用逗号分隔的字符串中提取出多个密码,然后逐个判断是否符合三条规则:

  1. 字符范围:只能包含a~zA~Z0~9以及!@#$四个特殊字符。
  2. 长度:6~12 个字符。
  3. 组成种类:大写字母、小写字母、数字至少包含两种,并且至少包含一个特殊字符(!@#$)。

思路如下:

  • 遍历字符串,遇到逗号就表示一个密码结束,将前面累积的tmp进行检验;否则将字符追加到tmp中。
  • 循环结束后还需要检验最后一个密码(因为末尾没有逗号)。
  • 检验函数check中,用五个标志分别记录:小写字母x、大写字母d、数字sz、特殊字符f、非法字符q。遍历密码的每个字符,设置相应标志。
  • 最后按照顺序判断:有非法字符 → 长度不合规 → 字母数字种类不足 → 缺少特殊字符。全部通过则返回true

二、带注释的代码

#include<bits/stdc++.h>usingnamespacestd;string s,tmp;// 检查密码是否合规boolcheck(string s){intx=0,d=0,sz=0,f=0,q=0;// 分别标记:小写、大写、数字、特殊、非法intn=s.size();for(inti=0;i<n;i++){if(s[i]>='a'&&s[i]<='z')x=1;// 小写字母elseif(s[i]>='A'&&s[i]<='Z')d=1;// 大写字母elseif(s[i]>='0'&&s[i]<='9')sz=1;// 数字elseif(s[i]=='!'||s[i]=='@'||s[i]=='#'||s[i]=='$')f=1;// 合法特殊字符elseq=1;// 非法字符}// 规则1:不能有非法字符if(q==1)returnfalse;// 规则2:长度必须在6~12之间if(n<6||n>12)returnfalse;// 规则3:大写、小写、数字至少两种if(x+d+sz<2)returnfalse;// 规则3:至少有一个特殊字符if(f==0)returnfalse;// 所有规则满足returntrue;}intmain(){cin>>s;intn=s.size();for(inti=0;i<n;i++){if(s[i]!=','){tmp+=s[i];// 不是逗号就继续累积}else{if(check(tmp))cout<<tmp<<endl;// 遇到逗号,检验前面的密码tmp="";// 清空,准备下一个密码}}// 最后一个密码(末尾没有逗号)if(check(tmp))cout<<tmp<<endl;return0;}

三、功能分析

  • 输入处理:通过cin直接读取一行,因为题目保证输入不含空格,所以可以安全使用cin >> s。如果输入中包含空格(本题没有),则应该改用getline,但当前代码完全满足题目要求。
  • 密码拆分:手动遍历字符串,以逗号为分隔符将每个密码提取到临时字符串tmp中。
  • 合规检查check函数对每个密码独立判断,按照“非法字符 → 长度 → 字母数字种类 → 特殊字符”的顺序返回结果。该顺序保证了所有条件都会被检查,并且效率较高(单次遍历)。
  • 输出:按输入顺序输出所有合法的密码,每行一个。

【完整系列请查看专栏】:
信奥赛C++普及组CSP-J一等奖通关刷题题单及题解:
https://blog.csdn.net/weixin_66461496/category_12673810.html 点击跳转


各种学习资料,助力大家一站式学习和提升!!!

#include<bits/stdc++.h>usingnamespacestd;intmain(){cout<<"########## 一站式掌握信奥赛知识! ##########";cout<<"############# 冲刺信奥赛拿奖! #############";cout<<"###### 课程购买后永久学习,不受限制! ######";return0;}

【秘籍汇总】(完整csp信奥赛C++学习资料):

1、csp/信奥赛C++,完整信奥赛系列课程(永久学习):

https://edu.csdn.net/lecturer/7901 点击跳转

2、CSP信奥赛C++竞赛拿奖视频课:

https://edu.csdn.net/course/detail/40437 点击跳转

https://edu.csdn.net/course/detail/41081 点击跳转

3、csp信奥赛高频考点知识详解及案例实践:

CSP信奥赛C++动态规划:
https://blog.csdn.net/weixin_66461496/category_13096895.html点击跳转

CSP信奥赛C++标准模板库STL:
https://blog.csdn.net/weixin_66461496/category_13108077.html 点击跳转

信奥赛C++提高组csp-s知识详解及案例实践:
https://blog.csdn.net/weixin_66461496/category_13113932.html 点击跳转

4、csp信奥赛冲刺一等奖有效刷题题解:

信奥赛C++普及组CSP-J一等奖通关刷题题单及题解:
https://blog.csdn.net/weixin_66461496/category_12673810.html 点击跳转

信奥赛C++提高组csp-j初赛&复赛真题题解(持续更新):https://blog.csdn.net/weixin_66461496/category_12808781.html 点击跳转

信奥赛C++提高组csp-s初赛&复赛真题题解(持续更新):
https://blog.csdn.net/weixin_66461496/category_13125089.html 点击跳转

5、GESP C++考级真题题解:

GESP(C++ 一级+二级+三级)真题题解(持续更新):https://blog.csdn.net/weixin_66461496/category_12858102.html 点击跳转

GESP(C++ 四级+五级+六级)真题题解(持续更新):https://blog.csdn.net/weixin_66461496/category_12869848.html 点击跳转


GESP(C++ 七级+八级)真题题解(持续更新):
https://blog.csdn.net/weixin_66461496/category_13117178.html 点击跳转

· 文末祝福 ·

#include<bits/stdc++.h>usingnamespacestd;intmain(){cout<<"跟着王老师一起学习信奥赛C++";cout<<" 成就更好的自己! ";cout<<" csp信奥赛一等奖属于你! ";return0;}
http://www.jsqmd.com/news/768849/

相关文章:

  • 2026年浙茶集团狮峰龙井茶门店费用怎么收 - myqiye
  • 如何高效管理数字阅读:番茄小说下载器完整指南
  • 掌握西门子PLC通信:S7.NET+库完全指南 [特殊字符]
  • MelonLoader完整指南:Unity游戏模组开发者的终极解决方案
  • 3分钟掌握视频PPT提取:extract-video-ppt终极教程
  • 告别一堆仪器!用Moku Pro激光锁盒,10分钟搞定PDH激光稳频实验
  • Android Studio升级后,ButterKnife报错?别慌,JDK17兼容性保姆级修复指南
  • 5分钟掌握SketchUp STL插件:3D打印模型转换的终极解决方案
  • 基于eBPF的pktstat-bpf:Linux网络流量实时监控与进程级诊断利器
  • 海添注塑机性价比高吗 - 工业品牌热点
  • 别再乱写状态机了!手把手教你用Verilog三段式搞定序列检测(附仿真对比)
  • 贵州师范大学考研辅导班机构选择:排行榜单与哪家好评测 - michalwang
  • macOS歌词同步神器LyricsX:3分钟打造专业级音乐体验 [特殊字符]
  • 行业内知名的拉力机品牌
  • 探索快马平台ai能力,构建智能辅导蓝桥杯eda客观题的应用
  • 为claudecode编程助手配置taotoken作为自定义模型提供商
  • ComfyUI Manager效能优化指南:从插件管理到工作流自动化
  • 中国词元:构建自主AI生态的第三条道路
  • Python自动化注册脚本实战:从验证码破解到高并发批量处理
  • Windows下Claude Code输入`claude`卡住无响应?问题根源在于代理环境变量
  • Steam Deck控制器Windows驱动实战:跨平台游戏控制的完整解决方案
  • AI编程助手专用Effect库速查工具:提升TypeScript函数式开发效率
  • 如何用ncmdumpGUI三分钟解锁网易云NCM音乐:Windows用户的终极解放指南
  • 别再折腾了!Ubuntu 20.04上PX4+Gazebo仿真环境一键安装脚本实测(附避坑清单)
  • csp信奥赛C++高频考点专项训练之字符串 --【字符统计】:字母求和
  • Mermaid实时编辑器终极指南:5分钟掌握代码绘图神器
  • ADAS域控制器、AI边缘推理、AR/VR:RS1G32LO5D2FDB-31BT的高带宽应用版图
  • 服务网格与 Java:构建弹性微服务架构
  • SQLCoder深度解析:让自然语言对话数据库的终极指南
  • Ocular框架:视觉AI工程化实践与生产部署指南