URL映射

CCF201803-3

#include<iostream>
#include<cstdio>
#include<cstring>
#include<string>
#include<algorithm>
#include<vector>
#include<sstream>
#include<map>
#include<queue>
using namespace std;
const int maxn=101;
const int maxm=101;
string s[maxn];
// 字符串 <str>:用于匹配一段字符串,注意字符串里不能包含斜杠。例如,abcde0123。
// 整数 <int>:用于匹配一个不带符号的整数,全部由阿拉伯数字组成。例如,01234。
// 路径 <path>:用于匹配一段字符串,字符串可以包含斜杠。例如,abcd/0123/。
struct node{
int id;//1-int,2-str,3-path
string s;
};
vector<node> ve;
int n,m;
map<string,string>ma;
bool legal(char c){
return (c>='0'&&c<='9')||(c>='a'&&c<='z')||(c>='A'&&c<='Z')||c=='.'||c=='_'||c=='-';
}
int main(){
cin>>n>>m;
for(int i=0;i<n;i++){
string name;
cin>>s[i]>>name;
ma[s[i]]=name;
}
for(int i=0;i<m;i++){
string t;
cin>>t;
bool flag=false;
for(int j=0;j<n;j++){
ve.clear();
string now=s[j];
bool flagsub=true;
int ks,kt;
for(ks=0,kt=0;ks<now.length()&&kt<t.length();){//k表示s[i]
if(now[ks]=='/'&&t[kt]=='/'){
ks++,kt++;
continue;
}
if(now[ks]=='<'){
string temp="";
while(now[++ks]!='>'){
temp+=now[ks];
}
ks++;//--------------
if(temp=="int"){
string ts="";
ts+=t[kt];
while(t[++kt]!='/'){
ts+=t[kt];
if(t[kt]>'9'||t[kt]<'0'){
flagsub=false;
break;
}
}
ve.push_back(node{1,ts});
}else if(temp=="str"){
string ts="";
ts+=t[kt];
while(t[++kt]!='/'){
ts+=t[kt];
if(!legal(t[kt])){
flagsub=false;
break;
}
}
ve.push_back(node{2,ts});
}else if(temp=="path"){//是路径的话
string ts="";
ts+=t[kt];
while((++kt)!=t.length()){
ts+=t[kt];
if(!legal(t[kt])&&t[kt]!='/'){
flagsub=false;
break;
}
}
ve.push_back(node{3,ts});
}
continue;
}
if(now[ks]==t[kt]){
ks++,kt++;
continue;
}
if(now[ks]!=t[kt]){
flagsub=false;
break;
}
}
if(ks<now.length()||kt<t.length()){
flagsub=false;
}
if(flagsub){
flag=true;
cout<<ma[now];
for(int k=0;k<ve.size();k++){
if(ve[k].id==1){//数字
cout<<" ";
int ksb=0;
if(ve[k].s[0]=='0')
ksb++;
for(;ksb<ve[k].s.length();ksb++){
cout<<ve[k].s[ksb];
}
}else
cout<<" "<<ve[k].s;
}
cout<<endl;
break;
}
}
if(!flag){
cout<<404<<endl;
}
}
return 0;
}

CCF(URL映射:80分):字符串处理+模拟的更多相关文章

  1. url映射 ccf (Java正则表达式80分解法)

    问题描述 试题编号: 201803-3 试题名称: URL映射 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述 URL 映射是诸如 Django.Ruby on Rails 等 ...

  2. 2-字符串模拟- URL映射

    问题描述 试题编号: 201803-3 试题名称: URL映射 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述 URL 映射是诸如 Django.Ruby on Rails 等 ...

  3. CCF 201803-3 URL映射

    CCF 201803-3  URL映射 试题编号: 201803-3 试题名称: URL映射 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述 URL 映射是诸如 Django. ...

  4. 二叉搜索树的结构(30 分) PTA 模拟+字符串处理 二叉搜索树的节点插入和非递归遍历

    二叉搜索树的结构(30 分) PTA 模拟+字符串处理 二叉搜索树的节点插入和非递归遍历   二叉搜索树的结构(30 分) 二叉搜索树或者是一棵空树,或者是具有下列性质的二叉树: 若它的左子树不空,则 ...

  5. PTA数据结构与算法题目集(中文) 7-43字符串关键字的散列映射 (25 分)

    PTA数据结构与算法题目集(中文)  7-43字符串关键字的散列映射 (25 分) 7-43 字符串关键字的散列映射 (25 分)   给定一系列由大写英文字母组成的字符串关键字和素数P,用移位法定义 ...

  6. CCF CSP 201803-3 URL映射

    转载自 https://blog.csdn.net/tigerisland45/article/details/81697594 /* CCF201803-3 URL映射 */ #include &l ...

  7. CCF-CSP 第三题字符串整理(模拟大法好)

    URL映射 规则的相邻两项之间用‘/’分开,所以我们先把所有项分开,然后依次把两个字符串的对应项匹配即可. 分离字符串这里用字符串流(stringstream)处理,先把所有的‘/’变为空格,然后一个 ...

  8. ASP.NET MVC 5 Web编程2 -- URL映射(路由原理)

    本章将讲述ASP.NET MVC5 的路由原理,即URL映射机制. 简单点就是解释:为什么MVC在浏览器输入地址就能访问到类(或类中的方法)?这是怎么做到的?我自己可以通过.NET写出一个自己的MVC ...

  9. django中“url映射规则”和“服务端响应顺序”

    1.django搜索路径 使用 import 语句时,Python 所查找的系统目录清单.      查看方式:         import sys        print sys.path   ...

随机推荐

  1. PowerShell随笔8 --- function

    为了脚本逻辑的重复使用,我们更多时候会封装成方法.PowerShell的function和C#.JavaScript的定义有些区别. 我们直接看例子: 可以看到,定义方法并不是这样的: functio ...

  2. 2.PowerShell概述

    PowerShell PowerShell命令窗一般随系统带着,运行->输入:powershell,即可打开命令窗口. 命令 Powershell有诸多命令,兼容cmd命令 语法和命令 在此我推 ...

  3. 5.2 spring5源码--spring AOP源码分析三---切面源码分析

    一. AOP切面源码分析 源码分析分为三部分 1. 解析切面 2. 创建动态代理 3. 调用 源码的入口 源码分析的入口, 从注解开始: 组件的入口是一个注解, 比如启用AOP的注解@EnableAs ...

  4. Operating System:信号量

    pv原语操作(1)操作系统PV意思:PV操作与信号量的处理相关,P表示通过的意度思,V表示释放的意思.(2)p操作和v操作是不可中断问的程序段,称为原语.如果将信号量看作共享变量,则pv操作为其临界区 ...

  5. 牛客国庆2 F-平衡二叉树【非原创】

    题目:戳这里 学习博客:戳这里

  6. JAMstack (JavaScript + APIs + Markup)

    JAMstack (JavaScript + APIs + Markup) The modern way to build Websites and Apps that delivers better ...

  7. 如何在 macOS 上进行滚动截屏

    如何在 macOS 上进行滚动截屏 Shift-Command-5 https://support.apple.com/zh-cn/guide/mac-help/mh26782/mac demo Xn ...

  8. css & object-fit & background-image

    css & object-fit & background-image object-fit /*default fill */ object-fit: fill|contain|co ...

  9. Google IO & 2019

    Google IO & 2019 Google IO Recap \ https://www.techradar.com/news/google-io-2019-keynote https:/ ...

  10. css ::selection 选择文本改变样式

    .p1::selection{ background: red; color: #fff; }