题目描述
如果一个密码满足以下所有条件,我们称它是一个 强 密码:
- 它有至少 
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;     } }
 
  |