AlenaNuna

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

HJ20 密码验证合格程序

题目:https://www.nowcoder.com/practice/184edec193864f0985ad2684fbc86841?tpId=37&tqId=21243&rp=1&ru=/exam/oj/ta&qru=/exam/oj/ta&sourceUrl=%2Fexam%2Foj%2Fta%3FtpId%3D37&difficulty=undefined&judgeStatus=undefined&tags=&title=

前两个判断很简单,就不多说了

第三个的判断可以用strstr。strstr(s1,s2)返回的是s2第一次在s1中出现的地址,如果不存在则返回NULL。

strstr(s1+from+1,s2)则是不包括当前起始位置。

复制代码
 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 char s[110],s1[110];
 4 int l,cnt;
 5 bool f[5];
 6 bool Work(){
 7     for(int from=0;from+2<l;from++)
 8         for(int to=from+2;to<l;to++){
 9             int len=0;
10             for(int k=from;k<=to;k++)
11                 s1[len++]=s[k];
12             s1[len]='\0';
13             if(strstr(s+from+1,s1)!=NULL)return 0;
14         }
15     return 1;
16 }
17 bool Check(){
18     l=strlen(s);
19     if(l<=8)return 0;
20     cnt=0;
21     memset(f,0,sizeof(f));
22     for(int i=0;i<l;i++){
23         if(s[i]>='A'&&s[i]<='Z'){
24             if(!f[0]){
25                 f[0]=1;
26                 cnt++;
27             }
28         }
29         else if(s[i]>='a'&&s[i]<='z'){
30             if(!f[1]){
31                 f[1]=1;
32                 cnt++;
33             }
34         }
35         else if(s[i]>='0'&&s[i]<='9'){
36             if(!f[2]){
37                 f[2]=1;
38                 cnt++;
39             }
40         }
41         else {
42             if(!f[3]){
43                 f[3]=1;
44                 cnt++;
45             }
46         }
47     }
48     if(cnt<3)return 0;
49     if(Work()) return 1;
50     else return 0;
51 }
52 int main(){
53     while(~scanf("%s",s)){
54         if (Check()) puts("OK");
55         else puts("NG");
56     }
57     return 0;
58 }
复制代码

 

posted on   AlenaNuna  阅读(15)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
点击右上角即可分享
微信分享提示