#include <iostream> using namespace std; bool is_num(char c) { if (c >= '0' && c <= '9') return true; else return false;; } bool is_upper(char c) { if (c >= 'A' && c <= 'Z') return true; else return false;; } bool is_lower(char c) { if (c >= 'a' && c <= 'z') return true; else return false;; } int main() { string s; int a = 0, b = 0, c = 0, d = 0; int count = 0; while (getline(cin, s)) { a = b = c = d = 0; if (s.length() <= 8) { cout << "NG" << endl; continue; } for (char ch: s) { if (is_lower(ch)) a = 1; else if (is_upper(ch)) b = 1; else if (is_num(ch)) c = 1; else d = 1; } count = a+b+c+d; if (count < 3) { cout << "NG" << endl; continue; } int flag = 0; for (int i = 0; i < s.length()-3; i++) { string ts = s.substr(i, 3); string ts2 = s.substr(i+3); if (ts2.find(ts)!=string::npos) { flag = 1; cout << "NG" << endl; break; } } if (flag == 1) continue; cout << "OK" << endl; } } // 64 位输出请用 printf("%lld")
关键知识点:
ts2.find(ts)!=string::npos。
使用npos表示string.find函数未找到的结果。