强密码检验器 II【LC2299】
A password is said to be strong if it satisfies all the following criteria:
- It has at least
8
characters.- It contains at least one lowercase letter.
- It contains at least one uppercase letter.
- It contains at least one digit.
- It contains at least one special character. The special characters are the characters in the following string:
"!@#$%^&*()-+"
.- It does not contain
2
of the same character in adjacent positions (i.e.,"aab"
violates this condition, but"aba"
does not).Given a string
password
, returntrue
if it is a strong password. Otherwise, returnfalse
.
-
思路:首先判断密码长度是否大于等于8,若是则判断该密码是否包含至少一个数字、小写字母、大写字母以及特殊字符,并相邻字符不相同,若满足条件则返回true。
-
实现:使用一个变量记录该密码是否包含数字、小写字母、大写字母以及特殊字符,若都包含则返回true。
class Solution { public boolean strongPasswordCheckerII(String password) { int n = password.length(); if (n < 8){ return false; } int flag = 0; for (int i = 0; i < password.length(); i++){ char c = password.charAt(i); if (i > 0 && password.charAt(i - 1) == c){ return false; } if ( c >= '0' && c <= '9'){ flag |= 1 << 0; }else if ( c >= 'a' && c <= 'z'){ flag |= 1 << 1; }else if ( c >= 'A' && c <= 'Z'){ flag |= 1 << 2; }else{ flag |= 1 << 3; } } return flag >= 15; } }
-
复杂度分析
- 时间复杂度: O ( n ) O(n) O(n)
- 空间复杂度: O ( 1 ) O(1) O(1)
-