强密码检验器 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 。

模拟

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

首先,我们检查密码的长度是否小于 888,如果是,则返回 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 Falsegz_lis, prev = [0] * 4, ''for i in password:if i == prev:return Falseprev = iif gz_lis[0] == 0 and ord('a') <= ord(i) <= ord('z'):gz_lis[0] = 1elif gz_lis[1] == 0 and ord('A') <= ord(i) <= ord('Z'):gz_lis[1] = 1elif gz_lis[2] == 0 and i.isdigit():gz_lis[2] = 1elif gz_lis[3] == 0 and i in "!@#$%^&*()-+":gz_lis[3] = 1return sum(gz_lis) == 4

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

算法刷题打卡第70天:强密码检验器 II相关推荐

  1. 【算法刷题日记之本手篇】星际密码与数根

    ⭐️前面的话⭐️ 本篇文章介绍来自牛客试题广场的两道题题解,分别为[星际密码]和[数根],展示语言java. 小贴士:本专栏所有题目来自牛客->面试刷题必用工具

  2. 算法刷题打卡第34天:有效的井字游戏

    有效的井字游戏 难度:中等 给你一个字符串数组 b o a r d board board 表示井字游戏的棋盘.当且仅当在井字游戏过程中,棋盘有可能达到 b o a r d board board 所 ...

  3. 算法刷题打卡第63天:对称二叉树

    对称二叉树 难度:简单 给你一个二叉树的根节点 root , 检查它是否轴对称. 示例 1: 输入:root = [1,2,2,3,4,4,3] 输出:true 示例 2: 输入:root = [1, ...

  4. 算法刷题打卡第43天:Dota2 参议院

    Dota2 参议院 难度:中等 Dota2 的世界里有两个阵营:Radiant(天辉)和 Dire(夜魇) Dota2 参议院由来自两派的参议员组成.现在参议院希望对一个 Dota2 游戏里的改变作出 ...

  5. 算法刷题打卡第76天:判断矩阵是否是一个 X 矩阵

    判断矩阵是否是一个 X 矩阵 难度:简单 如果一个正方形矩阵满足下述 全部 条件,则称之为一个 X 矩阵 : 矩阵对角线上的所有元素都 不是 0 矩阵中所有其他元素都是 0 给你一个大小为 n x n ...

  6. 算法刷题打卡第11天:合并两个有序数组

    合并两个有序数组 难度:简单 给你两个按非递减顺序排列的整数数组 nums1 和 nums2,另有两个整数 m 和 n ,分别表示 nums1 和 nums2 中的元素数目. 请你合并 nums2 到 ...

  7. python数据结构与算法40题_Python数据结构与算法刷题(2)——挖掘机技术哪家强...

    前言 前文传送门: 正文 为了用事实说明挖掘机技术到底哪家强,PAT组织了一场挖掘机技能大赛.现请你根据比赛结果统计出技术最强的那个学校. 输入格式: 输入在第1行给出不超过105的正整数N,即参赛人 ...

  8. 算法刷题-数论-试除法求约数、约数个数、约数之和、最大公约数(辗转相除法)

    文章目录 acwing869. 试除法求约数 acwing870. 约数个数 acwing871. 约数之和 acwing872. 最大公约数 acwing869. 试除法求约数 acwing869. ...

  9. 力扣 (LeetCode)-对称二叉树,树|刷题打卡

    Github来源:力扣 (LeetCode)|刷题打卡 | 求星星 ✨ | 给个❤️关注,❤️点赞,❤️鼓励一下作者 [已开启]任务一:刷题打卡 * 10 篇 哪吒人生信条:如果你所学的东西 处于喜欢 ...

最新文章

  1. 新盒模型移动端的排版
  2. Oracle Database 11g的使用
  3. SpringMVC中的文件上传
  4. JS高级-闭包-this指向
  5. 38. 统计一个整数的二进制表示中bit为1的个数
  6. android 驱动(7)---.设备、总线、驱动
  7. 军营中重重打击之后,我变了一个人(中)--我成为程序员所经历的(四)
  8. bzoj 3208 花神的秒题计划I
  9. bom实现方块移动_HTML 方块移动
  10. SLT学习(一)——STL组成介绍
  11. AndroidStudio有时候调试会一直卡在:starting LLDB server
  12. 小写转大写金额 php,php小写金额转大写
  13. 爬虫:Python爬取煎蛋网图片
  14. python的英文单词表_随机单词生成器 - Python
  15. 如何向DMOZ提交你的博客
  16. 小学计算机合作教学设计,小学信息技术教学设计
  17. java检测服务器磁盘空间占满_Java性能检测工具-记录一次通过jstack排查Linux服务器CPU占用率很高的实践...
  18. BIUT Blockchain Explorer功能介绍
  19. 杯子、笔、微信发朋友圈测试用例设计
  20. windows10 快速启动开启与关闭

热门文章

  1. Excel超级表的7个特性,你有必要掌握!
  2. PHP 7.x 各个版本的新特性
  3. Redis学习笔记(一) 数据类型事务异常Jredis
  4. linux根目录空间不足,追加空间到根目录下
  5. 搜索不到蓝牙鼠标问题的分析
  6. 2019icpc上海站总结
  7. VC读取EXCEL文件
  8. mysql 8函数结构存在哪个表里面_MySQL利用procedure analyse()函数优化表结构
  9. 可口可乐卖得那么好,为什么还要继续打广告?
  10. 思源笔记结合Everything+Quicker实现高效笔记记录