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

news/2023/6/9 20:22:19

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.exyb.cn/news/show-4560785.html

如若内容造成侵权/违法违规/事实不符,请联系郑州代理记账网进行投诉反馈,一经查实,立即删除!

相关文章

工作转正PPT

1.转正答辩整体概述 总体概述&#xff1a; 首先要介绍自己&#xff0c;让领导们对自己有个初步印象&#xff0c;以防后面讲了很多领导也不知道是谁。最好有个开场白&#xff0c;不看ppt讲2分钟左右 第二步&#xff0c;也是重中之重&#xff0c;要介绍实习期间自己做的任务有哪…

转正了~

大家好呀&#xff0c;我是武哥&#xff0c;真的好久不见了&#xff0c;距离上篇原创居然 1 个半月了。最近忙着转正答辩&#xff0c;同时又赶上一个超大型项目上线&#xff0c;时间彻底不够用了。转眼来新公司快 6 个月了&#xff0c;上周已经顺利转正&#xff0c;今天想和大家…

学习笔记:写一个自定义函数,输入字符串,输出字符串长度

入门小菜鸟的学习笔记&#xff0c;希望大佬们帮忙纠错啦~侵权立删。 解法一&#xff1a; def changdu(x):alen(x)print("该字符串长度为&#xff1a;",a)changdu("Apples unit price is 9 yuan.") 运行结果&#xff1a; 解法二&#xff1a; def putlen…

C++ isdigit() 的基本用法

功能 主要是拿来判断输入的字符是否是为 0 ~ 9 的数字。 &#xff08;还是那句话&#xff0c;刷题的话知道这个就够用了哈&#xff0c;想深入了解的小伙伴可以自行搜索&#xff09; 那具体如何使用&#xff1f;很简单根据下面的实例就和容易学得会 实例&#xff1a; #inclu…

C语言三元组表加法,以三元组表为存储结构实现矩阵相加

#include#include#includeusing namespace std;int FLAGl2 0,FLAGl1 0;struct node{struct node *next;char data;};struct stackchar{struct node *top;}*l1;struct digi{struct digi *next;struct datascore *data;};struct stackstr{struct digi *top;}*l2;int error1(){

C语言部分函数原型实现

学习、研究库函数的实现&#xff0c;能使你考虑问题更加严谨、全面&#xff0c;培养良好的编程风格和习惯 最近想学习一下C语言库函数的内部实现&#xff0c;于是自己简单地写了几个 贴出以下代码&#xff0c;希望大家能够帮忙指正、优化、完善&#xff0c; 特别是考虑不周和…

L1-064 估值一亿的AI核心代码 (代码有错,看看思路就成)

本题要求你实现一个稍微更值钱一点的 AI 英文问答程序&#xff0c;规则是&#xff1a; 无论用户说什么&#xff0c;首先把对方说的话在一行中原样打印出来&#xff1b; 消除原文中多余空格&#xff1a;把相邻单词间的多个空格换成 1 个空格&#xff0c;把行首尾的空格全部删掉&…

c语言指数常熟的正确表达形式,常熟理工学院 C语言 考试样卷

年月日 ______系______级______班学号________姓名________⊙ 密 ⊙ 封 ⊙ 线命题老师&#xff1a;计算机学院基础教学部} void main ( ) { int i, a2; for(i0;i<2;i) printf(“%5d”, fun(a)); }A.fprintf() B.fwrite() C.fread() D.fputc() 20.在缺省情况下&#xff0c;标…