算法刷题打卡第70天:强密码检验器 II
强密码检验器 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相关推荐
- 【算法刷题日记之本手篇】星际密码与数根
⭐️前面的话⭐️ 本篇文章介绍来自牛客试题广场的两道题题解,分别为[星际密码]和[数根],展示语言java. 小贴士:本专栏所有题目来自牛客->面试刷题必用工具
- 算法刷题打卡第34天:有效的井字游戏
有效的井字游戏 难度:中等 给你一个字符串数组 b o a r d board board 表示井字游戏的棋盘.当且仅当在井字游戏过程中,棋盘有可能达到 b o a r d board board 所 ...
- 算法刷题打卡第63天:对称二叉树
对称二叉树 难度:简单 给你一个二叉树的根节点 root , 检查它是否轴对称. 示例 1: 输入:root = [1,2,2,3,4,4,3] 输出:true 示例 2: 输入:root = [1, ...
- 算法刷题打卡第43天:Dota2 参议院
Dota2 参议院 难度:中等 Dota2 的世界里有两个阵营:Radiant(天辉)和 Dire(夜魇) Dota2 参议院由来自两派的参议员组成.现在参议院希望对一个 Dota2 游戏里的改变作出 ...
- 算法刷题打卡第76天:判断矩阵是否是一个 X 矩阵
判断矩阵是否是一个 X 矩阵 难度:简单 如果一个正方形矩阵满足下述 全部 条件,则称之为一个 X 矩阵 : 矩阵对角线上的所有元素都 不是 0 矩阵中所有其他元素都是 0 给你一个大小为 n x n ...
- 算法刷题打卡第11天:合并两个有序数组
合并两个有序数组 难度:简单 给你两个按非递减顺序排列的整数数组 nums1 和 nums2,另有两个整数 m 和 n ,分别表示 nums1 和 nums2 中的元素数目. 请你合并 nums2 到 ...
- python数据结构与算法40题_Python数据结构与算法刷题(2)——挖掘机技术哪家强...
前言 前文传送门: 正文 为了用事实说明挖掘机技术到底哪家强,PAT组织了一场挖掘机技能大赛.现请你根据比赛结果统计出技术最强的那个学校. 输入格式: 输入在第1行给出不超过105的正整数N,即参赛人 ...
- 算法刷题-数论-试除法求约数、约数个数、约数之和、最大公约数(辗转相除法)
文章目录 acwing869. 试除法求约数 acwing870. 约数个数 acwing871. 约数之和 acwing872. 最大公约数 acwing869. 试除法求约数 acwing869. ...
- 力扣 (LeetCode)-对称二叉树,树|刷题打卡
Github来源:力扣 (LeetCode)|刷题打卡 | 求星星 ✨ | 给个❤️关注,❤️点赞,❤️鼓励一下作者 [已开启]任务一:刷题打卡 * 10 篇 哪吒人生信条:如果你所学的东西 处于喜欢 ...
最新文章
- 新盒模型移动端的排版
- Oracle Database 11g的使用
- SpringMVC中的文件上传
- JS高级-闭包-this指向
- 38. 统计一个整数的二进制表示中bit为1的个数
- android 驱动(7)---.设备、总线、驱动
- 军营中重重打击之后,我变了一个人(中)--我成为程序员所经历的(四)
- bzoj 3208 花神的秒题计划I
- bom实现方块移动_HTML 方块移动
- SLT学习(一)——STL组成介绍
- AndroidStudio有时候调试会一直卡在:starting LLDB server
- 小写转大写金额 php,php小写金额转大写
- 爬虫:Python爬取煎蛋网图片
- python的英文单词表_随机单词生成器 - Python
- 如何向DMOZ提交你的博客
- 小学计算机合作教学设计,小学信息技术教学设计
- java检测服务器磁盘空间占满_Java性能检测工具-记录一次通过jstack排查Linux服务器CPU占用率很高的实践...
- BIUT Blockchain Explorer功能介绍
- 杯子、笔、微信发朋友圈测试用例设计
- windows10 快速启动开启与关闭