首页 > 其他分享 >P1043. 弱密码检验

P1043. 弱密码检验

时间:2023-08-15 14:59:08浏览次数:54  
标签:digit 数字 密码 递增 检验 P1043 连续 yes

这道题,我看到大家做的情况我就知道不简单

WA惨无人道啊

所以这就是今天这个随笔的内容

先看题目

一些网站在设置密码的时候都会判断你的密码是否为弱密码,通常从字符种类,密码长度等作为判断的依据。但是有的时候密码中包含连续的数字也是弱密码,例如 Aa123456789 这样的密码也应该被判定为弱密码。现在需要你来实现一个程序,用于判断一个字符串里面是否有连续的数字。

连续数字的定义:

  1. 一直递增的数字,且每次只递增 1;或者一直递减,且每次递减 1,例如 123,34567 ,7654 等。注意 343,3456765 不是连续数字,因为没有一直递增或者一直递减;12456 也不是连续数字,因为中间的 2 和 4 不是递增 1,而是增加了 2;78910 不是连续数字,注意 9 后面不能和 0 或者 10 相连。
  2. 长度大于等于 3,例如 12 不被判定为连续数字,因为它的长度太短了。

输入格式

第一行输入一行一个正整数 t,表示测试数据的组数(1≤t≤1000)

接下来 t 行,每行一个长度不超过 20 的字符串,表示一个密码,密码均由可见字符组成,不包含空格和换行符。

输出格式

对于每一组测试数据,输出 yes 或者 no(均为小写)表示给定的密码中是否至少含有一段连续的数字。

输入数据 1

4
abc123aee22
abc12321a
lxsb321yyy
flww12345677
 

输出数据 1

yes
no
yes
no
 

说明

第一个样例包含两段数字,分别是 123 和 22,其中 123 是连续数字,所以输出 yes。

第二个样例包含一段连续的数字是 12321,根据定义,这段数字不是一直递增也不是一直递减,所以不是连续的数字,输出 no。

第三个样例包含一段数字 321,是连续数字,输出 yes。

第四个样例包含一段数字 12345677,最后两个不是递增,所以输出 no。

 

思路:

这道题只要以字母分段,然后提出数字,最后判断递增或递减就可以了

代码:

#include <iostream> #include <string> using namespace std;
bool isConsecutive(string digit) {     if (digit.length() < 3) {         return false;     }
    bool isIncreasing = true;     bool isDecreasing = true;
    for (int i = 1; i < digit.length(); i++) {         if (digit[i] != digit[i - 1] + 1) {             isIncreasing = false;         }         if (digit[i] != digit[i - 1] - 1) {             isDecreasing = false;         }     }
    return isIncreasing || isDecreasing; }
int main() {     int t;     cin >> t;
    while (t--) {         string password;         cin >> password;
        string digit;         bool hasConsecutive = false;
        for (char c : password) {             if (isdigit(c)) {                 digit += c;             } else {                 if (isConsecutive(digit)) {                     hasConsecutive = true;                     break;                 }                 digit = "";             }         }
        if (isConsecutive(digit)) {             hasConsecutive = true;         }
        if (hasConsecutive) {             cout << "yes" << endl;         } else {             cout << "no" << endl;         }     }
    return 0; }

我一开始一直在判断连起来的数字,所以一直出错,我真(lll¬ω¬)

标签:digit,数字,密码,递增,检验,P1043,连续,yes
From: https://www.cnblogs.com/zhangxiaodiWW/p/17631250.html

相关文章

  • 某公司笔试题 - 密码验证合格程序(附python代码)
    #密码要求#1.长度超过8位;2.包括大小写字母,数字,其它符号,以上四种至少三种;3.不能有长度大于2的包含公共元素的字串重复(其他符号不含空格或换行)#数据范围:输入的字符串长度满足1<=n<=100#检测输入密码defcheckpassword(psw):iflen(psw)<=8orlen(psw)>100:r......
  • 使用 OpenSSL 解密 DBeaver 保存的数据库连接信息获取数据库连接密码
    你是不是使用任何软件时都喜欢记住密码?是的,我也喜欢。但如果有一天你想把密码分享给其他人,而你又不记得密码是什么了,没错你可以去查看已保存的密码,但是当你使用的是DBeaver时,不好意思,没有查看已保存的密码功能,这个时候不就尴尬了嘛。那么现在你也许不再需要因此而烦恼了,因为......
  • 联通光猫获取超级管理员密码,联通宽带逻辑ID 获取
    首先使用普通账户登录然后访问这个链接http://192.168.1.1/backpresettings.conf保存backpresettings.conf 打开文件就可以看到cuadmin也就是超级管理员的密码了由于我不小心重置了光猫然后一直注册让输入逻辑ID找客服大半天电话没有用,突然想到我备份的配置文......
  • 装饰装修工程检验批的合格判定
    (GB50210-2018)15.0.4检验批的质量验收应按现行国家标准《建筑工程施工质量验收统一标准》GB50300的格式记录。检验批的合格判定应符合下列规定:1抽查样本均应符合本标准主控项目的规定;2抽查样本的80%以上应符合本标准一般项目的规定。其余样本不得有影响使用功能或明显影响装饰......
  • (装饰装修验收规范)有关安全和功能的检验项目表
    《建筑装饰装修工程质量验收标准》GB50210-2018  表15.0.6有关安全和功能的检验项目表项次子分部工程检验项目1门窗工程建筑外窗的气密性能、水密性能和抗风压性能2饰面板工程饰面板后置埋件的现场拉拔力3饰面砖工程外墙饰面砖样板及工程的饰面砖粘......
  • mysql账号密码失效后无法修改密码问题处理过程
    --修改密码alterusermeet@'%'identifiedwithmysql_native_passwordby'123456';--修改账户有效期alteruser'meet'@'%'passwordexpireinterval600day;报错处理:ERROR1396(HY000):OperationALTERUSERfailedfor'meet�......
  • 开源数据库Mysql_DBA运维实战 (修改root密码)
    本文以windows为例为大家详细介绍下MySQL修改root密码的4种方法,大家可以可以根据的自己的情况自由选择,希望对大家有所帮助方法1:用SETPASSWORD命令首先登录MySQL。格式:mysql>setpasswordfor用户名@localhost=password('新密码');例子:mysql>setpasswordforroot@localh......
  • linux 6/7 修改root 密码 (grub界面)
    CentOS6:开机读秒时按任意键进入此画面按e选择kernel再按e在最后打一个空格然后输入1回车再按B进入单用户模式Passwd可以修改密码了CentOS7:开机菜单栏第一行按e,在linux16行尾,加入rd.breakcnotallow=tty0ctrl+x继续启动现在的根是/sysrootmount-oremount,rw/sys......
  • - csrf跨站请求的相关装饰器 - Auth模块的使用 - 凡是跟登录、注册、修改密码、注销
    csrf跨站请求的相关装饰器 Django中有一个中间件对csrf跨站做了验证,我只要把csrf的这个中间件打开,意味着所有的方法都要被验证在所有的视图函数中:只有几个视图函数做验证只有几个函数不做验证csrf_protect:哪个视图函数加了这个装饰器,这个函数就会做验证 csrf_exemp......
  • centos7忘记密码处理办法
    此界面按e进入grub编辑界面进入grub编辑界面。把linux16这行的ro修改为rwinit=/sysroot/bin/sh。按ctrl+x进入单用户模式登陆进去后,输入如下命令:chroot/sysroot/#切换到原系统LANG=en#设置显示语言passwdroot#修改root密码touch/.autorelabel#如果之前系......