题目描述
如果一个密码满足以下所有条件,我们称它是一个 强 密码:
- 它有至少
8
个字符。
- 至少包含 一个小写英文 字母。
- 至少包含 一个大写英文 字母。
- 至少包含 一个数字 。
- 至少包含 一个特殊字符 。特殊字符为:
"!@#$%^&*()-+"
中的一个。
- 它 不 包含
2
个连续相同的字符(比方说 "aab"
不符合该条件,但是 "aba"
符合该条件)。
给你一个字符串 password
,如果它是一个 强 密码,返回 true
,否则返回 false
。
示例 1:
1 2 3
| 输入:password = "IloveLe3tcode!" 输出:true 解释:密码满足所有的要求,所以我们返回 true 。
|
解题思路
- 模拟,这里的判断方法可以用Character里的现有方法替代
执行用时:1 ms, 在所有 Java 提交中击败了69.57%的用户
内存消耗:39.5 MB, 在所有 Java 提交中击败了53.26%的用户
通过测试用例:148 / 148
时间 O(n)
空间 O(1)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
| class Solution { public boolean strongPasswordCheckerII(String password) { int n=password.length(); if(n<8)return false; boolean have_big=false,have_small=false,have_num=false,have_sp=false; char pre='\n'; String sp="!@#$%^&*()-+"; for(int i=0;i<n;i++){ char c=password.charAt(i); if(c==pre){ return false; } pre=c; if(sp.contains(String.valueOf(c))){ have_sp=true; } else if(c-'A'>=0&&c-'A'<26){ have_big=true; } else if(c-'a'>=0&&c-'a'<26){ have_small=true; } else if(c-'0'>=0&&c-'0'<10){ have_num=true; }
} return have_big&&have_num&&have_small&&have_sp; } }
|