又一绑架算力作品

内存能否原谅我

循环判断老生常谈

寻找重复子串记得限制条件要比要求最长的大1

记得同时考虑两个循环嵌套的停止条件,要和最长子串相匹配

一个容易被忽略的点是标志位类的变量要在循环再次开始之前复位

否则容易造成上一次循环遗留下来的标志位影响下一次循环结果。

#include<string.h>


char input[100];
int len,i=0,j=0,k=0,f1=0,f2=0,f3=0,f4=0,flag=0;



int main()
    
{
    while(scanf("%s\n",input)!=EOF)
    {
        f1=0;//复位
        f2=0;
        f3=0;
        f4=0;
        len =strlen(input);
        if(len<8)//条件1
        {
            printf("NG\n");        
            
        }
        
        else
        {
       
        { 
           
            for(i=0;i<len;i++)//条件2
        {
            if((input[i]>='0')&&(input[i]<='9'))//不能用连等
            f1=1;
            else if((input[i]>='A')&&(input[i]<='Z'))
            f2=1;
            else if((input[i]>='a')&&(input[i]<='z'))
            f3=1;
            else
            f4=1;
        }
            
           if((f1+f2+f3+f4)<3) 
            printf("NG\n");
            
          else 
          {
              //条件3
              flag=0;
           for(i=0;i<len-6;i++)   
           {
            for(j=i+3;j<len-3;j++)   
            {
               if((input[i]==input[j])&&(input[i+1]==input[j+1])&&(input[i+2]==input[j+2]))
               {
                flag=1; 
               }
               }   
                
                               
               
           }
           if(flag==1)
                    printf("NG\n");
                
                else
                    printf("OK\n");   
              
          }
            
            
        }
           
            
            
            
            
        
        }
        
        
    }
    
    
    
}