题解 | 密码验证合格程序

密码验证合格程序

https://www.nowcoder.com/practice/184edec193864f0985ad2684fbc86841

#include <array>
#include <iostream>
#include <vector>
#include <cstring>
using namespace std;
int mp[128][128][128];
bool solve(string& s) {
    int n = s.size();
    memset(mp, 0, sizeof mp);
    if (n < 8)
        return false;
    int upper = 0, lower = 0, num = 0, special = 0;
    for (int i = 0; i < n; ++i) {
        if (s[i] >= 48 && s[i] <= 57)
            num = 1;
        else if (s[i] >= 65 && s[i] <= 90)
            upper = 1;
        else if (s[i] >= 97 && s[i] <= 122)
            lower = 1;
        else
            special = 1;
    }
    if(num+upper+lower+special<3)
        return false;
    for (int i = 1; i < n-1; ++i) {
        if(mp[s[i-1]][s[i]][s[i+1]]){
            if(i-mp[s[i-1]][s[i]][s[i+1]]>=3)
                return false;
        }
        else{
            mp[s[i-1]][s[i]][s[i+1]]=i;
        }
    }
    return true;

}
int main() {
    string s;
    while (cin >> s) {
        if (solve(s))
            cout << "OK" << endl;
        else
            cout << "NG" << endl;
    }

}
// 64 位输出请用 printf("%lld")

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务