zoukankan      html  css  js  c++  java
  • wenbao与字符串处理

    弱鸡代码

     1 #include <iostream>
     2 #include <string>
     3 #include <string.h>
     4 using namespace std;
     5 int main()
     6 {
     7     std::ios::sync_with_stdio(false);
     8     int n,i,j;
     9     string str1,str3,str2;
    10     cin>>str1;
    11     cin>>str2;
    12     int len = str1.length();
    13     for( i=0; i<len; i++)
    14     {
    15         if(str1[i]=='[')
    16         {
    17             n=0;
    18             for( j=i+1;; j++)
    19             {
    20                 if(str1[j]==']')
    21                 {
    22                     for(int t=0; t<n-1; t++)
    23                         str3+=str1[i-1];
    24                     break;
    25                 }
    26                 else
    27                 n=n*10+str1[j]-'0';
    28             }
    29             i=j;
    30         }
    31         else
    32             str3+=str1[i];
    33     }
    34     string::size_type it;
    35     it=str3.find(str2);
    36     if(it!=string::npos)
    37         cout<<"True"<<endl;
    38     else
    39         cout<<"False"<<endl;
    40     return 0;
    41 }

    大神代码

      1 #include <cstdio>  
      2 #include <cstring>  
      3 #include <cmath>  
      4 #include <cstdlib>  
      5 #include<iostream>  
      6 using namespace std;  
      7 #define N 1005  
      8 typedef long long ll;  
      9 struct C{  
     10     int cnt;  
     11     char ch;  
     12 };  
     13 C A[N], B[N];  
     14 int main()  
     15 {  
     16     while (1)  
     17     {  
     18         for (int i = 0; i < N; i++)  
     19         {  
     20             A[i].cnt = 1;  
     21         }  
     22         char temp, t = ' ';  
     23         int cnt1 = -1, cnt2 = -1;  
     24         while (scanf("%c", &temp), temp != '
    ')  
     25         {  
     26             if (t == temp) A[cnt1].cnt++;  
     27             else if (temp != '[' && t != temp)  
     28             {  
     29                 cnt1++;  
     30             }  
     31   
     32             if (temp >= 'a' && temp <= 'z')  
     33             {  
     34                 A[cnt1].ch = temp;  
     35                 t = temp;  
     36             }  
     37             if (temp == '[')  
     38             {  
     39                 int num;  
     40                 scanf("%d%*c", &num);  
     41                 A[cnt1].cnt = num;  
     42             }  
     43         }  
     44         t = ' ';  
     45         while (scanf("%c", &temp), temp != '
    ')  
     46         {  
     47             if (temp >= 'a' && temp <= 'z' && temp != t)  
     48             {  
     49                 B[++cnt2].ch = temp;  
     50                 B[cnt2].cnt = 1;  
     51                 t = temp;  
     52             }  
     53             else if (temp == t)  
     54             {  
     55                 B[cnt2].cnt++;  
     56             }  
     57         }  
     58     /* 
     59     for(int i=0;i<=cnt1;i++) 
     60     cout<<A[i].ch<<" "; 
     61     cout<<endl; 
     62     for(int i=0;i<=cnt1;i++) 
     63         cout<<A[i].cnt<<" "; 
     64     cout<<endl; 
     65     for(int i=0;i<=cnt2;i++) 
     66         cout<<B[i].ch<<" "; 
     67     cout<<endl; 
     68     for(int i=0;i<=cnt2;i++) 
     69         cout<<B[i].cnt<<" "; 
     70     cout<<endl; 
     71     */  
     72         int flag = 0;  
     73         for (int i = 0; i <= cnt1; i++)  
     74         {  
     75             if (A[i].ch == B[0].ch && A[i].cnt >= B[0].cnt)  
     76             {  
     77                 int flag2 = 1;  
     78                 for (int j = 1; j < cnt2; j++)  
     79                 {  
     80                     if (A[i + j].ch != B[j].ch || A[i + j].cnt != B[j].cnt)  
     81                     {  
     82                         flag2 = 0;  
     83                         break;  
     84                     }  
     85                 }  
     86                 if (flag2)  
     87                 {  
     88                     if (A[i + cnt2].ch == B[cnt2].ch && A[i + cnt2].cnt >= B[cnt2].cnt)  
     89                     {  
     90                         flag = 1;  
     91                         break;  
     92                     }  
     93                 }  
     94             }  
     95         }  
     96         if (cnt1 == -1 && cnt2 == -1) break;  
     97         if (flag) printf("True
    ");  
     98         else printf("False
    ");  
     99     }  
    100     return 0;  
    101 }  

    只有不断学习才能进步!

  • 相关阅读:
    IDAPython学习(一)
    自动提取文件系统---binwalk(一)
    Scapy Fuzz实现——S7协议从建连到“正常交流“(一)
    工控系统的指纹识别技术
    揭秘VxWorks——直击物联网安全罩门
    VxWorks Fuzzing 之道:VxWorks 工控实时操作系统漏洞挖掘调试与利用揭秘
    路由器文件系统与提取
    python 调试技巧
    拿下id_rsa
    elasticsearch 7.1 401 Unauthorized
  • 原文地址:https://www.cnblogs.com/wenbao/p/5737083.html
Copyright © 2011-2022 走看看