zoukankan      html  css  js  c++  java
  • 【CCF】URL映射 模拟

      1 #include<iostream>
      2 #include<cstdio>
      3 #include<cstring>
      4 #include<string>
      5 #include<cmath>
      6 #include<algorithm>
      7 #include<queue>
      8 #include<map>
      9 using namespace std;
     10 int n,m;
     11 const int maxn=1e2+2;
     12 string rule[maxn],value[maxn];
     13 string s,t;
     14 int lens,lent;
     15 bool legal(){
     16     for(int i=0;i<lent;i++){
     17         if(t[i]>='a'&&t[i]<='z') continue;
     18         if(t[i]>='A'&&t[i]<='Z') continue;
     19         if(t[i]>='.'||t[i]=='-'&&t[i]=='_') continue;
     20         return false;
     21     }
     22     return true;
     23 }
     24 bool check(){
     25     lens=s.length();
     26     int i=0,j=0;
     27     while(i<lens&&j<lent){ 
     28         if(s[i]==t[j]){
     29             i++;
     30             j++;
     31             continue;
     32         }
     33         if(s[i]!='<') return false;
     34         if(s[i+1]=='i'){
     35             i+=5;
     36             while(j<lent){
     37                 if(t[j]>='0'&&t[j]<='9') j++;
     38                 else if(t[j]=='/') break;
     39                 else return false;
     40             }
     41         }else if(s[i+1]=='s'){
     42             i+=5;
     43             while(j<lent){
     44                 if(t[j]!='/') j++;
     45                 else break;
     46             }
     47         }else if(s[i+1]=='p'){
     48             return true;
     49         }
     50     }
     51     if(i!=lens||j!=lent) return false;
     52     return true;
     53 }
     54 void print(int id){
     55     cout<<value[id];
     56     int i=0,j=0;
     57     while(i<lens&&j<lent){
     58         if(s[i]==t[j]){
     59             i++;
     60             j++;
     61             continue;
     62         }
     63         if(s[i+1]=='i'){
     64             cout<<" ";
     65             i+=5;
     66             int flag=1;
     67             while(j<lent){
     68                 if(t[j]=='/') break;
     69                 if(flag&&t[j]=='0'){
     70                     j++;
     71                     continue;
     72                 }
     73                 cout<<t[j];
     74                 flag=0;
     75                 j++;
     76             }
     77         }else if(s[i+1]=='s'){
     78             i+=5;
     79             cout<<" ";
     80             while(j<lent){
     81                 if(t[j]=='/') break;
     82                 cout<<t[j];
     83                 j++;
     84             }
     85         }else if(s[i+1]=='p'){
     86             cout<<" ";
     87             while(j<lent){
     88                 cout<<t[j];
     89                 j++;
     90             }
     91         }
     92     }
     93     cout<<endl;
     94 }
     95 void work(){
     96     lent=t.length();
     97     if(!legal()){
     98         printf("404
    ");
     99         return;
    100     }
    101     for(int i=1;i<=n;i++){
    102         s=rule[i];
    103         if(check()){
    104             print(i);
    105             return;
    106         }
    107     }
    108     printf("404
    ");
    109     return;
    110 }
    111 int main(){
    112     while(~scanf("%d%d",&n,&m)){
    113         for(int i=1;i<=n;i++){
    114             cin>>rule[i]>>value[i];
    115         }
    116         for(int i=1;i<=m;i++){
    117             cin>>t;
    118             work();
    119         }
    120     }
    121     return 0;
    122 }
  • 相关阅读:
    字典_序列解包用于列表元组字典
    字典_序列解包用于列表元组字典
    字典_元素的访问_键的访问_值的访问_键值对的访问
    字典_特点_4种创建方式_普通-dict
    元组_生成器推导式创建元组-总结
    MySql高级
    技术点
    全文检索ElasticSearch
    数仓管理
    SpringCache
  • 原文地址:https://www.cnblogs.com/itcsl/p/9203579.html
Copyright © 2011-2022 走看看