题目
给定用户密码输入流 input,输入流中字符’<‘表示退格,可以清除前一个输入的字符,请你编写程序,输出最终得到的密码字符,并判断密码是否满足如下的密码安全要求。
密码安全要求如下:
密码长度>=8;
密码至少需要包含 1 个大写字母;
密码至少需要包含 1 个小写字母;
密码至少需要包含 1 个数字;
密码至少需要包含 1 个字母和数字以外的非空白特殊字符
注意空串退格后仍然为空串,且用户输入的字符串不包含’<‘字符和空白字符。
输入描述
用一行字符串表示输入的用户数据,输入的字符串中’<‘字符标识退格,用户输入的字符串不包含空白字符,例如:ABC<c89%000<
输出描述
输出经过程序处理后,输出的实际密码字符串,并输出改密码字符串是否满足密码安全要求。两者间由’,'分隔, 例如:ABc89%00,true
示例
输入
ABC<c89%000<
1
输出
ABc89%00,true
参考代码
栈的应用以及Character类中api 的使用
package RealTest;
import java.util.Scanner;
import java.util.Stack;
/**
* @ClassName stackDemo
* @Description TODO
* @Author 21916
* @Date 2024/3/27 20:59
*/
public class stackDemo {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
//分别对应五个条件
boolean f1 =false;
boolean f2 =false;
boolean f3 =false;
boolean f4 =false;
boolean f5 =false;
String s = sc.nextLine();
char[] arr = s.toCharArray();
Stack<Character> stack = new Stack<>();
for(char ch:arr){
if(ch!='<') stack.push(ch);
else if(ch=='<') stack.pop();
}
// System.out.println(stack);
StringBuilder sb= new StringBuilder("");
if(stack.size()>=8) f1=true;
for (char c:stack){
if(Character.isLetter(c)){
if(Character.isUpperCase(c)) f2=true;
else if(Character.isLowerCase(c)) f3=true;
}
else if(Character.isDigit(c)) f4= true;
else if(!Character.isLetter(c)&&!Character.isDigit(c)) f5=true;
sb.append(c);
}
String str = sb.toString();
boolean f =f1&&f2&&f3&&f4&&f5;
System.out.println(str+","+f);
}
}