#35. 密码输入检测

密码输入检测

题目

给定用户密码输入流 input,输入流中字符 '<' 表示退格,可以清除前一个输入的字符,请你编写程序,输出最终得到的密码字符,并判断密码是否满足如下的密码安全要求。

密码安全要求如下: 1、密码长度 ≥ 8; 2、密码至少需要包含 1 个大写字母; 3、密码至少需要包含 1 个小写字母; 4、密码至少需要包含 1 个数字; 5、密码至少需要包含 1 个字母和数字以外的非空白特殊字符; 注意空串退格后仍然为空串,且用户输入的字符串不包含 '<' 字符和空白字符。

输入描述

用一行字符串表示输入的用户数据,输入的字符串中 '<' 字符标识退格,用户输入的字符串不包含空白字符,例如: ABC<c89%000<

输出描述

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

解题思路

处理退格符号 '<',使用栈遍历输入字符串,遇到字符 '<' 时将栈顶元素出栈,表示退格操作,否则将当前字符压入栈中。然后构建密码字符串,遍历完输入字符串后,栈中剩下的字符就是最终的密码字符,因为退格符号会将前一个输入字符删除。再检查密码安全性,遍历密码字符串,判断是否满足以下条件: 长度 ≥ 8 至少包含一个大写字母 至少包含一个小写字母 至少包含一个数字 至少包含一个字母和数字以外的非空白特殊字符