赞
踩
题目描述
给定用户密码输入流 input,输入流中字符 '<' 表示退格,可以清除前一个输入的字符,
请你编写程序,输出最终得到的密码字符,并判断密码是否满足如下的密码安全要求。
密码安全要求如下:
- 密码长度 ≥ 8;
- 密码至少需要包含 1 个大写字母;
- 密码至少需要包含 1 个小写字母;
- 密码至少需要包含 1 个数字;
- 密码至少需要包含 1 个字母和数字以外的非空白特殊字符;
注意空串退格后仍然为空串,且用户输入的字符串不包含 '<' 字符和空白字符。
输入描述
用一行字符串表示输入的用户数据,输入的字符串中 '<' 字符标识退格,
用户输入的字符串不包含空白字符,例如:
ABC<c89%000<
输出描述
输出经过程序处理后,输出的实际密码字符串,并输出改密码字符串是否满足密码安全要求。两者间由 ',' 分隔, 例如:
ABc89%00,true
示例1
输入
ABC<c89%000<
输出
ABc89%00,true
考点
栈结构
思路
将字符入栈,如果下一个字符为<,则将栈顶字符弹出;
最后将所有字符依次弹出,并统计数字和字母、字符的个数;
- #include <bits/stdc++.h>
- using namespace std;
- int main() {
- string str;
- stack<char> st;
- string res;
- int b=0,s=0,d=0,tag=0;//大小写,数字,符号的个数
- cin>>str;
- int len=str.size();
- for(int i=0;i<len;i++) {
- char c=str[i];
- if(!st.empty() && c=='<') {
- st.pop();
- continue;
- }
- st.push(c);
- }
- while(!st.empty()) {
- char tmp=st.top();
- st.pop();
- res=tmp+res;
- if(tmp>='a'&&tmp<='z') {
- s=1;
- }else if(tmp>='A'&&tmp<='Z') {
- b=1;
- }else if(isdigit(tmp)) {
- d=1;
- }else{
- tag
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。