题解 | #密码验证合格程序#
密码验证合格程序
https://www.nowcoder.com/practice/184edec193864f0985ad2684fbc86841
#include <iostream> #include<algorithm> using namespace std; //求重复子串的最大长度 int repeatesubstring(string s) { int max1=0; for(int i=0;i<s.size();i++) { for(int j=i+1;j<s.size();j++) { int sum=0; while(s[i+sum]==s[j+sum]) { sum++; } if(max1>=sum) max1=max1; else max1=sum; } } return max1; } int main() { string str; while(cin>>str) { int len=str.size(); int s1=0; //小写 int s2=0; //大写 int s3=0; //数字 int s4=0; //其他字符 //记录字符种类 for(int i=0;i<len;i++) { if(str[i]>='a'&&str[i]<='z') { s1=1; } else if(str[i]>='A'&&str[i]<='Z') { s2=1; } else if(str[i]>='0'&&str[i]<='9') { s3=1; } else { s4=1; } } //求最大重复子串,判断是否大于2 int max1=repeatesubstring(str); //同时满足复杂度大于3 最长重复子串小于2 总长度大于8 if(((s1+s2+s3+s4)>=3)&&max1<=2&&str.length()>8) { cout<<"OK"<<endl; } else cout<<"NG"<<endl; } } // 64 位输出请用 printf("%lld")