【每日一题】- 密码校验

华为机试:密码验证合格程序 一、题目: 描述 密码要求: 1.长度超过8位 2.包括大小写字母.数字.其它符号,以上四种至少三种 3.不能有相同长度大于2子串重复 输入描述: 一组或多组长度超过2的字符串。每组占一行 输出描述: 如果符合要求输出:OK,否则输出NG 二、输入输出示例: 三、代码: #include<iostream> using namespace std; #include<string> int main() { string s; int a[4] = 阅读详情

题目描述

密码要求:
1.长度超过8位
2.包括大小写字母.数字.其它符号,以上四种至少三种
3.不能有长度大于2的包含公共元素的子串重复 (注:其他符号不含空格或换行)

数据范围:输入的字符串长度满足 1≤n≤100
输入描述:
一组字符串。
输出描述:
如果符合要求输出:OK,否则输出NG

题解思路

这种多条要求的就分情况分别讨论,逻辑分析类题。通过分析清楚代码虽稍长,不过思路清晰后并不难写出,也比较容易调试。

code

def check():
    # 输入一组字符串
    string = input()
    # 条件1:长度超过8
    if len(string) <= 8:return 0
    # 条件2:小写字母、大写字母、数字、特殊符号,必须至少包含3种
    a,b,c,d = 0,0,0,0
    for i in string:
        if 'a' <= i <= 'z':
            a = 1
        elif 'A' <= i <= 'Z':
            b = 1
        elif '0' <= i <= '9':
            c = 1
        else:
            d = 1
    if a+b+c+d < 3: return 0
    # 条件3:重复子串的长度不能大于2
    dic = {}
    for i in range(len(string)-3):
        subString = string[i:i+3]
        if subString not in dic:
            dic[subString] = 1
        else:
            dic[subString] += 1
            if dic[subString] >=2 : return 0
    return 1

while True:
    try:
        if check():
            print("OK")
        else:
            print("NG")
    except:
        break
Postman数据驱动测试实战:密码校验接口自动化测试框架搭建 数据驱动测试是一种将测试数据与测试逻辑分离的自动化测试方法,其核心原理是通过外部数据源(如CSV、JSON文件)驱动测试脚本执行,实现一次脚本编写、多组数据验证。这种模式在接口测试领域具有重要技术价值,能够显著提升测试用例的覆盖率和维护效率,尤其适用于输入组合多样、校验规则明确的场景,例如用户注册、登录、密码修改等安全校验接口。本文以密码校验接口为例,深入探讨如何在Postman中设计测试数据矩阵、编写参数化脚本,并解决动态依赖数据和断言优化等实战问题,为构建高效可靠的接口自动化测试框架提供完整解决方案。 阅读详情

相关推荐

还在用if校验参数?SpringBoot使用validation优雅实现参数校验

你还在使用if else的方式进行入参的校验吗?能看的出来,这样的校验方式看起来很不优雅,当然也是能达到目的。如果说有非常多的参数需要校验的话,就要写非常多的if else,就像老太婆的裹脚布一样,又臭又长,让人看起来非常的难受。话不多说,下面我就给大家推荐一个优雅校验入参的方式吧!

阿木木AEcru的博客 1068

牛客网力扣算法编程之六 | 字符串- 密码验证合格程序-Java代码实现

算法编程】-密码验证合格程序 一. 描述 密码要求: 1.长度超过8位 2.包括大小写字母.数字.其它符号,以上四种至少三种 3.不能长度大于2的不含公共元素子串重复 (注:其他符号不含空格或换行) 数据范围:输入的字符串长度满足 本题有多组输入 输入描述: 一组或多组字符串。每组占一行 输出描述: 如果符合要求输出:OK,否则输出NG 示例1 输入: 021Abc9000 021Abc9Abc1 021ABC9000 021$bc9000输出: OK NG NG OK 二. 解题思路...

weixin_42886699的博客 1011

图解密码技术

第一章 环游密码世界 1.角色 2.加密之前的叫明文,加密后的叫密文 3.加密算法,解密算法2者合在一起为密码算法 4.密码算法需要秘钥,秘钥就是一个字符串 5.对称密码:在加密和解密时使用同一秘钥,又叫公共秘钥密码、传统密码、私钥密码、共享秘钥密码 6.公钥密码:在加密和解密时,使用不同的秘钥,非对称秘钥。 7.混合密码系统:将对称密码和公钥密码结合在一起使用 8.单向散列...

飞鸟慕鱼的博客 1741

前端基础知识与常见面试题(六)

开发一个坐标计算工具, A表示向左移动,D表示向右移动,W表示向上移动,S表示向下移动。//在第n个(n>=3)台阶时,上一个台阶是n-1或者n-2,所以跳上n台阶的方法总数是n-1台阶方法总数和n-2台阶方法总数之和。所谓防抖,就是指触发事件后在 n 秒内函数只能执行一次,如果在 n 秒内又触发了事件,则会重新计算函数执行时间。给出一个整型数组 numbers 和一个目标值 target,请在数组中找出两个加起来等于目标值的数的下标,返回的下标按升序排列。,问你生命周期不要回答生命周期对应的钩子函数!

m0_71003185的博客 572

java 字符串

由于每次对String实例进行修改将创建一个新的String实例,因此如果连续多次对String实例进行修改将连续创建多个新的String实例,不必要的开销较大。另外,如果要忽略大小写排序,可以使用String类的toLowerCase()或toUpperCase()方法将字符串转换为全小写或全大写,再按照上面的方法排序。如果您需要对字符串中单词按字典序排序,可以使用Arrays类的sort方法和String类的split方法将字符串分割为单词,再排序。对字母排序,可以使用Arrays类的sort方法。

weixin_40540942的博客 552

python的split()方法妙用

例如ACM模式下一道密码合格验证的算法题: 题目: 密码要求: 1.长度超过8位 2.包括大小写字母.数字.其它符号,以上四种至少三种 3.不能长度大于2包含公共元素子串重复 (注:其他符号不含空格或换行) 数据范围:输入的字符串长度满足 1 \le n \le 100 \1≤n≤100 输入描述: 一组字符串。 输出描述: 如果符合要求输出:OK,否则输出NG 示例: 输入 021Abc9000 021Abc9Abc1 021ABC9000 021$bc9000 输出 OK NG NG OK 代

qq_24889005的博客 842

小Why的密码锁【牛客tracker & 每日一题

【摘要】 题目要求统计字符串中可能正确的密码数量。密码规则为:长度为m的子串必须恰好出现k次,且每次出现位置不能重叠(因解锁后会清空字符)。解题采用字符串哈希技术预处理所有子串,通过哈希表记录每个密码的最后出现位置和总次数。核心步骤:1)线性计算前缀哈希值;2)遍历所有候选子串,跳过重叠出现的情况;3)统计出现次数等于k的密码数。算法时间复杂度O(n),高效处理1e6长度的字符串。示例输入"1231234123123"(n=13,m=5,k=2)输出2,因存在两个符合规则的密码子串

Pretty Boy Fox的博客 421

java每日精进 5.14【参数校验

当内置注解不足以满足需求时,可自定义校验注解。@Target({})String message() default "手机号格式不正确";Class<?Class<?解析@Target:指定注解可用于字段、方法、参数等。@Retention:运行时保留,供校验器读取。@Constraint:绑定校验器 MobileValidator。message:自定义错误提示。

weixin_51721783的博客 954

记录每日LeetCode 2299.强密码校验器II Java实现

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

m0_65563175的博客 1697

每日整理:SpringMVC的数据校验

数据校验的目的: 1.前端校验:通过js验证:数据长度,数据空,格式匹配 2.后端校验:避免出现脏数据,保证数据安全和完整性,原因用户直接跳过页面请求后端(一般在进行更新操作时需要使用) 手动校验(忽略) 自动校验:使用校验框架 1.添加依赖: <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-validator</a...

swshiki的博客 411

每日一题day08

1.若系统中只有用户级线程,则处理机调度单位是(B)。 A 线程 B 进程 C 程序 D 作业 解析:如果系统只有用户态线程,则线程对操作系统是不可见的,操作系统只能调度进程; 如果系统中有内核态线程,则操作系统可以按线程进行调度 2.如果信号量的当前值为-4,则表示系统中在该信号量上有(A)个进程等待。 A、 4 B、 3 C、 5 D、 0 解析:信号量为-m,就是有m个进程在等待,一共m+1个进程,还有一个已经进入临界区 3.常所说的"存储保护"的基本含义是()。 A、防止存储器硬件受损 B

doudou0309的博客 1158

密码学101:密码

本文是《图解密码技术》阅读的总结性文章。 历史上的密码 现代的密码通常用于计算机数据的加密,操作的是比特序列。但早在计算机诞生之前,加密技术就已经被使用了。历史上使用过的密码有这些: 凯撒密码算法:通过将字母按照字母表顺序进行平移的方式对文本进行加密;反平移解密 密钥:平移的位数 缺点:可以通过暴力破解破译 简单替换密码算法:通过一对一的字母替换表,将字母进行替换;反替换解密 密钥:26! 特点:明文中字母的出现频率与密文中的字母的出现频率一致 缺点:由于密钥空间

po4kee的博客 2366

每日分享:Linux 系统密码安全加固:pam_pwquality.so 策略配置详解

密码是 Linux 系统安全的第一道防线,弱密码极易成为黑客暴力破解、恶意入侵的突破口。在 Linux 系统中,模块是实现密码强度校验的核心组件,通过它可灵活定义密码长度、字符类型、尝试次数等规则,从源头提升系统账户安全性。本文将详细讲解如何通过修改配置实现密码策略加固,适合运维工程师、系统管理员及安全从业者参考。目录前言1. pam_pwquality.so模块简介2. 密码策略配置详细步骤2.1 编辑 PAM 认证配置文件2.2 修改pam_pwquality.so配置行3. 核心配置参数深度解析。

m0_74102179的博客 1657

B端产品“忘记密码”功能测试清单(接上篇B 端产品忘记密码业务流程设计)

避免技术化术语,让用户能快速理解问题(如将 “验证码校验失败” 优化为 “验证码不正确,请重新输入”)。案例:输入 “123” 作为手机号,系统未提示格式错误,反而进入 “账号不存在” 流程,造成用户困惑。案例:用户输入 “123456” 作为新密码,系统未提示强度不足,直接重置成功,导致账号安全风险。,触发频率限制时,返回友好提示(如“操作过于频繁,请稍后再试”),提升用户体验。,如验证码错误后,用户可直接在当前页重新输入,无需返回上一级,提升操作流畅性。(如 60 秒内只能发一次),防止恶意请求。

2301_81329849的博客 723

每日一练】124—一组密码强度动画效果的实现

写在前面密码安全,一直是大家非常关注的一个问题,如果我们在前端开发设计的时候,给用户一个及时反馈,会提升我们的用户体验,用户也会感觉这个设计很友善,用户能够及时知道自己设置的这个密码是安全性高还是安全性低。因此,今天,我们就来写一个这样的密码及时反馈动画效果,这个练习的最终效果如下:看完了最终效果,我们一起来看一下它的实现代码,具体如下:HTML代码:<!DOCTYPE html> &...

web前端开发 199

每日一题misc——明文攻击

把题目下载下来是一大串十六进制,发现是504B开头所以猜测是压缩包文件, 放入winhex里另存为,得到一个压缩包,题目里还有一个提示是到底有几个文件,所以可以联想到可能不止一个文件在里面,如果你懒得看,可以直接分离尝试一下,也可以在winhex或者010editor里查看可以发现有FFD8FF~FFD9这是jpg图片。 放入kali执行foremost命令分离出一张图片和一个压缩包, 图片的crc跟压缩包里的一张图片crc一样,猜测是明文攻击 拿出工具冲它题目很简单,但是也卡了一段时间,因为出题人压缩软件

doraemon12345的博客 1708

Hash的简介与hashlib模块的使用、模拟撞库与密码加盐

简要介绍了hash及其两个用途,代码简单实现了基于hashlib模块对密码进行加密,并介绍了撞库与密码加盐的破解密文与反破解方式

steaksunflower的博客 753

python_Daily practice (每日一练) 39

用户名和密码格式校验程序 要求从键盘输入用户名和密码校验格式是否符合规则,如果不符合,打印出不符合的原因,并提示重新输入 用户名长度6-20,用户名必须以字母开头 密码长度至少6位,不能为纯数字,不能有空格 参考代码 # coding=utf-8 while True: # 获取用户输入 username = input("请输入用户名:") # 如果输入“QUIT”则退...

weixin_44786482的博客 733
上一篇: 【每日一题】- 温度转换
下一篇: 【每日一题】- 删除出现最少的字符
雨山小七
博客等级 码龄6年 1粉丝 · 32原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

雨山小七

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值