使用Java解牛客网OR141密码检查

小明同学最近开发了一个网站,在用户注册账户的时候,需要设置账户的密码,为了加强账户的安全性,小明对密码强度有一定要求:

1. 密码只能由大写字母,小写字母,数字构成;

2. 密码不能以数字开头;

3. 密码中至少出现大写字母,小写字母和数字这三种字符类型中的两种;

4. 密码长度至少为8

现在小明受到了n个密码,他想请你写程序判断这些密码中哪些是合适的,哪些是不合法的。

输入描述:

输入一个数n,接下来有n(n≤100)行,每行一个字符串,表示一个密码,输入保证字符串中只出现大写字母,小写字母和数字,字符串长度不超过100。

输出描述:

输入n行,如果密码合法,输出YES,不合法输出NO

思路:

这道题目我觉得没什么套路,就是一个个检查是否符合要求就可以了

放代码:

import java.util.*;

public class Main {

	public static void main(String[] args) {
		// TODO Auto-generated method stub

		@SuppressWarnings("resource")
		Scanner cin = new Scanner(System.in);

		int n = cin.nextInt();// 要判断的密码数量

		String ss[] = new String[n];// 定义一个一位数组,并且申请空间

		// System.out.println(n);

		for (int i = 0; i < n; i++) {

			ss[i] = cin.next();// 把密码存入到数组中

		} // 1 bhgyyy

		for (int i = 0; i < n; i++) {

			int a = 0;// 定义一个变量

			int b = 0;// 定义一个变量

			int c = 0;// 定义一个变量

			for (int j = 0; j < ss[i].length(); j++) {

				if (ss[i].length() < 8)

					break;// 密码长度不能小于8位

				else if ((int) (char) (ss[i].charAt(j)) >= 0 && (int) (char) (ss[i].charAt(j)) <= 9)

					break;// 密码不能以数字开头

				else if ((int) (char) (ss[i].charAt(j)) >= 0 && (int) (char) (ss[i].charAt(j)) <= 9)

					a = 1;// 如果这是数字就把a的值定义为1

				else if ((int) (char) (ss[i].charAt(j)) >= 65 && (int) (char) (ss[i].charAt(j)) <= 90)

					b = 1;// 如果这是大写字母就把b的值定义为1

				else if ((int) (char) (ss[i].charAt(j)) >= 97 && (int) (char) (ss[i].charAt(j)) <= 122)

					c = 1;// 如果这是小写字母就把c的值定义为1

				else {// 如果这不是数字,不是大写字母也不是小写字母就结束循环

					// 因为密码不规范所以把a,b,c的值定义为0;
					a = 0;

					b = 0;

					c = 0;

					break;

				}

			}

			if ((a + b + c) >= 2)
				System.out.println("YES");// (a+b+c)>=2表示密码符合要求
			else
				System.out.println("NO");

		}

	}

}
经验分享 程序员 微信小程序 职场和发展