题解 | #密码验证合格程序#

密码验证合格程序

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

#include <iostream>
#include <string>
using namespace std;

bool checkString(const string& a) {
    int isnum = 0;
    int isupper = 0;
    int islower = 0;
    int isother = 0;
    int finder = 0;

    if (a.length() <= 8) {
        return false;
    }

    for (string::const_iterator it = a.begin(); it != a.end(); it++) {
        if (isalpha(*it)) {
            if (abs(*it) >= 97 && abs(*it) <= 123) {
                islower = 1;
            } else if (abs(*it) >= 65 && abs(*it) <= 91) {
                isupper = 1;
            }
        } else if (isdigit(*it)) {
            isnum = 1;
        } else if (*it != ' ' && *it != '\n') {
            isother = 1;
        }
    }

    if (isnum + islower + isupper + isother < 3) {
        return false;
    }

    for (int i = 0; i <= a.size() - 3; i++) {
        string temp = a.substr(i, 3);
        string temp1 = a.substr(0, i);
        string temp2 = a.substr(i + 3);
        string temp3 = temp1 + temp2;
        finder = temp3.find(temp);
        if (finder != string::npos) {
            return false;
        }
    }

    return true;
}

int main() {
    string a;
    while (getline(cin, a)) {
        if (checkString(a)) {
            cout << "OK" << endl;
        } else {
            cout << "NG" << endl;
        }
    }
    return 0;
}

全部评论

相关推荐

10-09 00:50
已编辑
长江大学 算法工程师
不期而遇的夏天:1.同学你面试评价不错,概率很大,请耐心等待;2.你的排名比较靠前,不要担心,耐心等待;3.问题不大,正在审批,不要着急签其他公司,等等我们!4.预计9月中下旬,安心过节;5.下周会有结果,请耐心等待下;6.可能国庆节前后,一有结果我马上通知你;7.预计10月中旬,再坚持一下;8.正在走流程,就这两天了;9.同学,结果我也不知道,你如果查到了也告诉我一声;10.同学你出线不明朗,建议签其他公司保底!11.同学你找了哪些公司,我也在找工作。
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务