首页 > 其他分享 >力扣每日一题2023.1.19---2299. 强密码检验器 II

力扣每日一题2023.1.19---2299. 强密码检验器 II

时间:2023-01-19 17:45:59浏览次数:54  
标签:2299 false 包含 示例 19 --- 密码 add password

如果一个密码满足以下所有条件,我们称它是一个 强 密码:
    它有至少 8 个字符。
    至少包含 一个小写英文 字母。
    至少包含 一个大写英文 字母。
    至少包含 一个数字 。
    至少包含 一个特殊字符 。特殊字符为:"!@#$%^&*()-+" 中的一个。
    它 不 包含 2 个连续相同的字符(比方说 "aab" 不符合该条件,但是 "aba" 符合该条件)。
给你一个字符串 password ,如果它是一个 强 密码,返回 true,否则返回 false 。

示例 1:
输入:password = "IloveLe3tcode!"
输出:true
解释:密码满足所有的要求,所以我们返回 true 。

示例 2:
输入:password = "Me+You--IsMyDream"
输出:false
解释:密码不包含数字,且包含 2 个连续相同的字符。所以我们返回 false 。

示例 3:
输入:password = "1aB!"
输出:false
解释:密码不符合长度要求。所以我们返回 false 。

提示:
    1 <= password.length <= 100
    password 包含字母,数字和 "!@#$%^&*()-+" 这些特殊字符。
来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/strong-password-checker-ii
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

 

没啥好说的,从后往前按照题目遍历并判断条件即可。

class Solution {
    public boolean strongPasswordCheckerII(String password) {
        if (password.length() < 8) {
            return false;
        }
        Set<Character> set = new HashSet<>() {{
                add('!');
                add('@');
                add('#');
                add('$');
                add('%');
                add('^');
                add('&');
                add('*');
                add('(');
                add(')');
                add('-');
                add('+');
        }};
        boolean[] arr = new boolean[4];
        for (int i = 0; i < password.length(); i ++) {
            char tem = password.charAt(i);
            if (i - 1 >= 0 && tem == password.charAt(i - 1)) {
                return false;
            }
            if ('a' <= tem && tem <= 'z') {
                arr[0] = true;
            } else if ('A' <= tem && tem <= 'Z') {
                arr[1] = true;
            } else if ('0' <= tem && tem <= '9') {
                arr[2] = true;
            } else if (set.contains(tem)) {
                arr[3] = true;
            } else {
                return false;
            }
        }
        return arr[0] && arr[1] && arr[2] && arr[3];
    }
}

运行结果

 

标签:2299,false,包含,示例,19,---,密码,add,password
From: https://www.cnblogs.com/allWu/p/17061879.html

相关文章

  • abc236 F - Spices
    题意:选\(S=\{1,2,\dots,2^n-1\}\)的一个子集\(E\),要求\(E\)的子集的异或和取遍\(S\)的所有元素。选取\(S_i\)要花费\(c_i\),问最小花费\(2\len\le16\)思......
  • Vue2.0项目引入字体库font-awesome
    1.安装依赖npminstallfont-awesome--save2.引入依赖可以选择全局引入或局部引入import'font-awesome/css/font-awesome.min.css';3.使用方式3.1.基本图标......
  • XXL-JOB调度算法备忘
    文章目录一.时间对齐二.scheduleThread调度线程三.ringThread时间轮(算法)线程原理源码实现本章介绍init()最后一个步骤,初始化调度线程。另外第六步的JobLogReportHelp......
  • redis分布式集群 -- Cluster
    Redis分布式系统的特点和限制多主多从,去中心化,从节点作为备用,复制主节点,不做读写操作,不提供服务;支持动态扩容节点;节点之间相互通信,相互选举,保证及时故障转移,不再依赖sen......
  • 38-IK分词器的安装
    我们使用vagrant创建的虚拟机,默认没有给我们开启root权限,默认只允许ssh登录,为了后来操作方便、文件上床等,我们配置允许账号密码登录Vagrantssh进去系统之后vi/etc/ss......
  • 博客园---我来啦!!!
    今天我农历生日......
  • ecs-lite 源码简单分析
    初学typescript,分析的不到位欢迎指正。 ecs-lite基于ts实现的纯ecs库,可用于学习交流及H5游戏开发!https://gitee.com/aodazhang/ecs-lite?_from=gitee_search文......
  • redis主从集群 -- Sentinel 哨兵
    Redis的主从集群是一个“一主多从”的读写分离集群。集群中的Master节点负责处理客户端的读写请求,而Slave节点仅能处理客户端的读请求。在采用单线程IO模型时,为了......
  • 2023-1-9练习
    DelivertheCakeEasySSSP跑步(Floyd模板)构造完全图烦人的幻灯片(slides)病毒(virus)点的距离聚会郁闷的出纳员有便便的厕所'......
  • JavaWeb-JSP
    JavaWeb-JSP1,JSP概述JSP(全称:JavaServerPages):Java服务端页面。是一种动态的网页技术,其中既可以定义HTML、JS、CSS等静态内容,还可以定义Java代码的动态内容,也就是JS......