题解 | #密码验证合格程序#
密码验证合格程序
https://www.nowcoder.com/practice/184edec193864f0985ad2684fbc86841
#include <stdio.h>
#include <string.h>
//11.12-11.34 20分钟
int main() {
char str[102] = {0};
while (fgets(str, sizeof(str), stdin) != NULL) {
str[strcspn(str, "\r")] = 0;
str[strcspn(str, "\n")] = 0;
int len = strlen(str);
if (len <= 8) {
printf("NG\n");
continue;
}
//检查大小写等
char lower = 0, upper = 0, dig = 0, sign = 0;
int i = 0;
for (i = 0; i < len; i++) {
//printf("str[i]:%c\n", str[i]);
if (str[i] >= 'a' && str[i] <= 'z') {
lower = 1;
} else if (str[i] >= 'A' && str[i] <= 'Z') {
upper = 1;
} else if (str[i] >= '0' && str[i] <= '9') {
dig = 1;
} else {
sign = 1;
}
if (lower + upper + dig + sign >= 3) {
break;
}
}
if ((lower + upper + dig + sign) < 3) {
printf("NG\n");
//printf("%d %d %d %d\n", lower , upper , dig , sign);
continue;
}
//检查字串
char sub_str[4] = {0};
char repeat_substr = 0;
for (i = 0; i < len-3; i++) {
memset(sub_str, 0, sizeof(sub_str));
memcpy(sub_str, str+i, 3);
if (strstr(str+i+1, sub_str)) {
repeat_substr = 1;
break;
}
}
if (repeat_substr) {
printf("NG\n");
}
else {
printf("OK\n");
}
memset(str, 0, sizeof(str));
}
return 0;
}
