当前位置:   article > 正文

2024年华为OD机试真题-密码输入检测-(C++/Java/python)-OD统一考试(C卷D卷)

2024年华为OD机试真题-密码输入检测-(C++/Java/python)-OD统一考试(C卷D卷)

题目描述

给定用户密码输入流 input,输入流中字符 '<' 表示退格,可以清除前一个输入的字符,

请你编写程序,输出最终得到的密码字符,并判断密码是否满足如下的密码安全要求。

密码安全要求如下:

  • 密码长度 ≥ 8;
  • 密码至少需要包含 1 个大写字母;
  • 密码至少需要包含 1 个小写字母;
  • 密码至少需要包含 1 个数字;
  • 密码至少需要包含 1 个字母和数字以外的非空白特殊字符;

注意空串退格后仍然为空串,且用户输入的字符串不包含 '<' 字符和空白字符。

输入描述

用一行字符串表示输入的用户数据,输入的字符串中 '<' 字符标识退格,

用户输入的字符串不包含空白字符,例如:

ABC<c89%000<

输出描述

输出经过程序处理后,输出的实际密码字符串,并输出改密码字符串是否满足密码安全要求。两者间由 ',' 分隔, 例如:

ABc89%00,true

示例1

输入

ABC<c89%000<

输出

ABc89%00,true

考点

栈结构

思路

将字符入栈,如果下一个字符为<,则将栈顶字符弹出;

最后将所有字符依次弹出,并统计数字和字母、字符的个数;

代码

c++
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. int main() {
  4. string str;
  5. stack<char> st;
  6. string res;
  7. int b=0,s=0,d=0,tag=0;//大小写,数字,符号的个数
  8. cin>>str;
  9. int len=str.size();
  10. for(int i=0;i<len;i++) {
  11. char c=str[i];
  12. if(!st.empty() && c=='<') {
  13. st.pop();
  14. continue;
  15. }
  16. st.push(c);
  17. }
  18. while(!st.empty()) {
  19. char tmp=st.top();
  20. st.pop();
  21. res=tmp+res;
  22. if(tmp>='a'&&tmp<='z') {
  23. s=1;
  24. }else if(tmp>='A'&&tmp<='Z') {
  25. b=1;
  26. }else if(isdigit(tmp)) {
  27. d=1;
  28. }else{
  29. tag
本文内容由网友自发贡献,转载请注明出处:https://www.wpsshop.cn/w/运维做开发/article/detail/767238
推荐阅读
相关标签
  

闽ICP备14008679号