代码编织梦想

强密码检验器 II

难度:简单

如果一个密码满足以下所有条件,我们称它是一个 强 密码:

  • 它有至少 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 。

模拟

思路:
根据题目描述,我们可以模拟检查密码是否满足题目要求的过程。

首先,我们检查密码的长度是否小于 8 8 8,如果是,则返回 false

接下来,我们用一个数组(初始化全为 0,出现规则则为 1)来记录密码是否包含小写字母、大写字母、数字和特殊字符。我们遍历密码,每次遍历到一个字符,先判断它是否和前一个字符相同,如果是,则返回 false。然后,根据字符的类型数组。最后,我们检查数组是否为总和为 4,如果是,则返回 true,否则返回 false

复杂度分析:

  • 时间复杂度: O ( n ) O(n) O(n),n 为密码的长度。
  • 空间复杂度: O ( 1 ) O(1) O(1)
class Solution:
    def strongPasswordCheckerII(self, password: str) -> bool:
        if len(password) < 8:
            return False
        gz_lis, prev = [0] * 4, ''
        for i in password:
            if i == prev:
                return False
            prev = i
            if gz_lis[0] == 0 and ord('a') <= ord(i) <= ord('z'):
                gz_lis[0] = 1
            elif gz_lis[1] == 0 and ord('A') <= ord(i) <= ord('Z'):
                gz_lis[1] = 1
            elif gz_lis[2] == 0 and i.isdigit():
                gz_lis[2] = 1
            elif gz_lis[3] == 0 and i in "!@#$%^&*()-+":
                gz_lis[3] = 1
        return sum(gz_lis) == 4

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/strong-password-checker-ii

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_45616285/article/details/128733767

转发:Datawhale第七期组队学习计划-爱代码爱编程

编者注:Datawhale是一个公益组织,也是AiUnion的四个成员之一,所有学习计划是免费的。 第7期Datawhale组队学习计划 马上就要开始啦 这次共组织15个组队学习 涵盖了AI领域从理论知识到动手实践的内容 按照下面给出的最完备学习路线分类 难度系数分为低、中、高三档 可以按照需要参加 - - - 学习路线 -  

89 次荣登活跃榜,最高排名第 9 ,从零学算法第二周周报发布-爱代码爱编程

第一周周报完整 pdf 版下载地址: https://t.zsxq.com/rBMVzbM 第二周周报完整 pdf 版星球内下载 作者:算法刷题日记全体星友 版权归属:算法刷题日记全体星友 整理:振哥 周报目录大纲 周报目录大纲第二周星球官方数据Day 10:哈希表设计的艺术1 什么是哈希表?2 哈希表原理3 哈希集4 哈希映射5

2021年我的互联网秋招算法岗总结!-爱代码爱编程

↑↑↑关注后"星标"Datawhale 每日干货 & 每月组队学习,不错过  Datawhale干货  作者:李金泽,清华大学,Datawhale作者 前言 一晃接近三个月过去了,秋招也到了尾声,之前一直忙于写毕业论文,现在在这里想总结一些自己求职互联网大厂算法岗的面经和心得,希望帮助后来的学弟学妹们收获自己心仪的offer。

2021我的互联网秋招算法岗总结-爱代码爱编程

作者 | 对白 个人简介 | 清华大学,工学硕士在读 文章著作权归属作者,如涉及侵权请联系删文。 原文链接,点击文末阅读原文直达: https://zhuanlan.zhihu.com/p/296551038 一晃接近三个月过去了,秋招也到了尾声,之前一直忙于写毕业论文,现在在这里想总结一些自己求职互联网大厂算法岗的面经和心得,希望帮助

【2021】一位清华大佬的互联网秋招算法岗总结-爱代码爱编程

点击上方,选择星标或置顶,不定期资源大放送! 阅读大概需要15分钟 Follow小博主,每天更新前沿干货 本文作者:李金泽(清华大学在读硕士)  |  编辑:Amusi 转自:https://zhuanlan.zhihu.com/p/296551038 本文仅供学习参考,如有侵权,请联系删除! 一晃接近三个月过去

清华硕士眼中的2021届算法岗秋招-爱代码爱编程

文 | 李金泽 一晃接近三个月过去了,秋招也到了尾声,之前一直忙于写毕业论文,现在在这里想总结一些自己求职互联网大厂算法岗的面经和心得,希望帮助后来的学弟学妹们收获自己心仪的offer。 今年的算法岗求职较往年竞争也更加激烈,可以预见以后进大厂的算法岗会变得越来越难,比如美团北斗去年的准入门槛是一篇CCF A,而今年直接提升到了两篇CCF A,难

图码详解算法|理解八大思想,胜刷百道力扣!-爱代码爱编程

文章首发:微信搜索「Kevin的学堂」 零、前言 Hello,我是Kevin,之前和大家刷题打卡了很多天,但是发现效果并不理想,于是我在反思,我知道由于我追求数量导致了文章质量不高,另外我只是分享题解并未让大家理解算法的内涵,授之以鱼,不如授之以渔。 比起分享一道道题解,我想分享核心的算法思想应该更为重要。 所以,我打算写这篇文章带大家学习

《算法和数据结构》学习路线指引-爱代码爱编程

本文已收录于专栏 🌳《画解数据结构》🌳 🙉饭不食,水不饮,题必须刷🙉 C语言免费动漫教程,和我一起打卡! 🌞《光天化日学C语言》🌞 LeetCode 太难?先看简单题! 🧡《C语言入门100例》🧡 数据结构难?不存在的! 🌳《画解数据结构》🌳

《算法和数据结构》从语言到算法的过渡篇-爱代码爱编程

本文已收录于专栏 💜《夜深人静写算法》💜 前言   看到太多爆肝熬夜整合的内容,又是几万字,又是爆肝,我也来试试看能不能扛得住。试完后发现,果然还是扛不住啊。但是既然整理完了,那就把我的 算法学习路线 发出来吧,我把整个算法学习的阶段总结成了五个步骤,分别为: 「 基础语法 」、 「 语法练习 」、 「 数据结构 」、 「 算法入门 」

「 英雄哪里出来 」算法博客阅读指引-爱代码爱编程

文章目录 前言一、语言基础1、「 光天化日学C语言 」二、刷题必读1、「 LeetCode零基础指南 」2、「 九日集训每日打卡 」三、语言入门1、「 C语言入门100例 」2、「 C语言每日打卡 」四、算法入门1、「 算法零基础100讲 」2、「 算法零基础每日打卡 」五、算法进阶1、「 画解数据结构 」2、「 算法进阶50讲 」3、「 Leet

《算法和数据结构》初出茅庐篇-爱代码爱编程

🧧2022 "算法" 赛道新星计划导师🧧 下滑到文末报名 文章目录 前言一、刷提前的准备1、编程语言2、编程环境3、测试用例二、推荐的书1、LeetCode零基础指南2、算法导论三、零基础如何刷LeetCode1、水题2、多维思考3、举一反三4、参加九日集训四、如何学习算法1、系统整理2、解题划级五、零基础算法十题入门1

算法如何学习?别想太多,两个字-爱代码爱编程

文章目录 前言一、语言基础1、「 光天化日学C语言 」二、刷题必读1、「 LeetCode零基础指南 」2、「 九日集训每日打卡 」三、语言入门1、「 C语言入门100例 」四、算法入门1、「 算法零基础100讲 」五、算法进阶1、「 画解数据结构 」2、「 LeetCode算法题集汇总 」3、「 夜深人静写算法 」六、社区活动1、「 明年今日 」

学算法先学数据结构?是否是无稽之谈?-爱代码爱编程

前言   「 数据结构 」 和 「 算法 」 是密不可分的,两者往往是「 相辅相成 」的存在,所以,在学习 「 数据结构 」 的过程中,不免会遇到各种「 算法 」。  到底是先学 数据结构 ,还是先学 算法,我认为不必纠结这个问题,一定是一起学的。  数据结构 常用的操作一般为:「 增 」「 删 」「 改 」「 查 」。基本上所有的数据结构都是围绕

算法怎么学?每天早起刷题,坚持一定会有收获-爱代码爱编程

文章目录 前言一、语言基础1、「 光天化日学C语言 」二、刷题必读1、「 LeetCode零基础指南 」2、「 九日集训每日打卡 」三、语言入门1、「 C语言入门100例 」四、算法入门1、「 算法零基础100讲 」五、算法进阶1、「 画解数据结构 」2、「 LeetCode算法题集汇总 」3、「 夜深人静写算法 」 前言   很多人看

2023届秋招图像算法岗面经记录(持续更新中)_轻舟的万重重山的博客-爱代码爱编程

文章目录 TPlink(普联)潮州三环中电十所科大讯飞旷视超参数虹软大华速腾聚创中兴哲库科技 TPlink(普联) TP一面(20min) 自我介绍(3-4min)项目介绍(讲自己的ppt讲了10min

【c语言练习】 二进制中1的个数-爱代码爱编程

目录 题目详情:思路一:思路二:思路三: 题目详情: 思路一:  拿到二进制的每一位,看它是否等于 1

acwing - 寒假每日一题2023(day 6——day 10)-爱代码爱编程

文章目录 一、AcWing 4645. 选数异或(中等)1. 实现思路2. 实现代码 二、AcWing 4644. 求和(简单)1. 实现思路2. 实现代码 三、AcWing 4653. 数位排序(简单)1.