华为oj中级 密码验证合格程序
2017-03-21 14:18
162 查看
描述
密码要求:
1.长度超过8位
2.包括大小写字母.数字.其它符号,以上四种至少三种
3.不能有相同长度超2的子串重复
说明:长度超过2的子串
知识点 字符串,数组
运行时间限制 0M
内存限制 0
输入
一组或多组长度超过2的子符串。每组占一行
输出
如果符合要求输出:OK,否则输出NG
每行输出对应一组输入的结果;
样例输入 021Abc9000 021Abc9Abc1 021ABC9000 021$bc9000
样例输出 OK NG NG OK
密码要求:
1.长度超过8位
2.包括大小写字母.数字.其它符号,以上四种至少三种
3.不能有相同长度超2的子串重复
说明:长度超过2的子串
知识点 字符串,数组
运行时间限制 0M
内存限制 0
输入
一组或多组长度超过2的子符串。每组占一行
输出
如果符合要求输出:OK,否则输出NG
每行输出对应一组输入的结果;
样例输入 021Abc9000 021Abc9Abc1 021ABC9000 021$bc9000
样例输出 OK NG NG OK
#include<iostream> #include<algorithm> #include<string> #include<vector> #include<unordered_map> #include<fstream> #include<sstream> using namespace std; bool is_qualified(string &s){ if (s.size() > 8){ int cnt1 = 0; int cnt2 = 0; int cnt3 = 0; int cnt4 = 0; bool flag = false; for (int i = 0; i < s.size(); i++){ if (isdigit(s[i])){ cnt1=1; } else if(isalpha(s[i])){ if (isupper(s[i])) cnt2 = 1; else cnt3 = 1; } else{ cnt4 = 1; } if (cnt1 + cnt2 + cnt3 + cnt4 >= 3){ flag = true; break; } } if (flag){ string str1,str2; for (int i = 0; i < s.size() - 5; i++){ str1 = s.substr(i, 3); for (int j = i + 3; j < s.size() - 2; j++){ str2 = s.substr(j, 3); if (str1 == str2){ return false; } } } return true; } else{ return false; } } else{ return false; } } int main(){ string s; while (getline(cin, s)){ if (is_qualified(s)){ cout << "OK" << endl; } else{ cout << "NG" << endl; } } return 0; }
相关文章推荐
- 华为OJ中级题-密码验证合格程序
- 密码验证合格程序(华为oj)
- 华为OJ-----密码验证合格程序
- 华为OJ——密码验证合格程序
- 华为OJ——密码验证合格程序
- 华为oj 密码验证合格程序
- 【华为 OJ】密码验证合格程序
- 【华为OJ20】密码验证合格程序
- 华为oj之密码验证合格程序
- 华为OJ 密码验证合格程序
- 华为OJ密码验证合格程序
- 华为oj 密码验证合格程序
- 【华为OJ】【017-密码验证合格程序】
- 华为OJ-密码验证合格程序-牛客网
- 【华为oj】密码验证合格程序
- 华为OJ(密码验证合格程序)
- 【华为机试】密码验证合格程序
- 华为机试题:密码验证合格程序
- OJ-----密码验证合格程序
- 华为机试在线训练108题:密码验证合格程序