密码验证合格程序
来源:互联网 发布:什么是淘宝直通车图片 编辑:程序博客网 时间:2024/05/21 21:33
题目描述
密码要求:
1.长度超过8位
2.包括大小写字母.数字.其它符号,以上四种至少三种
3.不能有相同长度超2的子串重复
说明:长度超过2的子串
输入描述:
一组或多组长度超过2的子符串。每组占一行
输出描述:
如果符合要求输出:OK,否则输出NG
示例1
输入
021Abc9000021Abc9Abc1021ABC9000021$bc9000
输出
OKNGNGOK
解题思路
对于第一个要求,只要判断输入的字符串长度即可。需要注意的是,其他字符可能包括空格,因此要用getline来输入。
对于第二个要求,只要设置四个int型变量,分别表示四种类型的字符是否存在即可。四个变量的初始化都是0,如果密码字符串中含有某一种变量,则该变量设为1。最后检查四个变量之和是否超过3即可。
对于第三个要求,只需要检查是否有长度为3的重复子串。因为如果有长度超过3的重复子串,其中必定含有长度为3的重复子串。要检查是否有长度为3的重复子串,用两层循环遍历即可。
代码
#include <iostream>#include <string>using namespace std;int main(){ string code; while (getline(cin, code)) { if (code.size() <= 8) //长度必须超过8位 { cout << "NG" << endl; continue; } int upper = 0, lower = 0, number = 0, other = 0; //大写,小写字母,数字,其他字符 for (int i = 0; i < code.size(); i++) { if (isupper(code[i])) //大小字母 upper = 1; else if (islower(code[i])) //小写字母 lower = 1; else if (isdigit(code[i])) //数字 number = 1; else other = 1; } if (upper + lower + number + other < 3) //至少包含三种 { cout << "NG" << endl; continue; } bool duplicate = 0; //是否有重复子串 for (int i = 0; i < code.size(); i++) //检查是否有长度为3的子串重复 { for (int j = i + 3; j < code.size(); j++) { if (code[i] == code[j] && code[i + 1] == code[j + 1] && code[i + 2] == code[j + 2]) //有重复的子串 { duplicate = 1; break; } } } if (duplicate) //不能有长度超2的重复子串 { cout << "NG" << endl; continue; } cout << "OK" << endl; } return 0;}
阅读全文
0 0
- 密码验证合格程序
- 密码验证合格程序
- 密码验证合格程序
- 密码验证合格程序
- 密码验证合格程序
- 密码验证合格程序
- 密码验证合格程序
- 密码验证合格程序
- 密码验证合格程序
- 密码验证合格程序
- 密码验证合格程序
- 密码验证合格程序
- 密码验证合格程序
- 密码验证合格程序
- 密码验证合格程序
- 密码验证合格程序
- 密码验证合格程序
- 密码验证合格程序
- Red Giant Trapcode Suite 12.0 含注册码
- iOS开发笔记之六十五——两种截屏方案的对比
- 【Eternallyc】qsort排序函数用法
- 函数初了解
- JavaEE----JPA中配置文件persistence.xml
- 密码验证合格程序
- Search for a Range
- Nginx安装、配置及使用总结
- 关键字register static const #define用法总结
- caffe网络结构可视化
- Android中AIDL的使用(一)
- struts2使用modeldriven执行转向更新页面是直接将getByID()获取到的值赋值给model数据不回显
- ibatis demo01
- 面试题 22: 栈的压入,弹出序列