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. hdu517 Triple

    Time Limit: 12000/6000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Total Submissio ...

  2. Educational Codeforces Round 96 (Rated for Div. 2) E. String Reversal (思维,逆序对)

    题意:给你一个字符串,每次可以调换现字符串的相邻两个字符,问最少操作多少次使得这个字符串等于其反转过来的字符串. 题解:先考虑字符串中没有相同字符的情况,那么我们每次将目前字符串的最后一个字符一直调换 ...

  3. cs寄存器

    练习 答案: 代码段: cs:ip指定的cpu认为是指令

  4. F(x) HDU - 4734

    题意: 给你一个n位的数x(A(n)A(n-1)...A(1)),那么F(x)=A(n)*2^(n-1)+A(n-1)*2^(n-2)......+A(1)*2^(0) 题目输入A.B 你需要找出来在 ...

  5. Codeforces Round #663 (Div. 2) C. Cyclic Permutations (构造,图?)  

    题意:对于某个序列,若\(1\le i\le n\),\(1\le j\le i\)且\(p_j>p_i\),或者\(1\le i\le n\),\(i<j \le n\)且\(p_j&g ...

  6. OpenStack Train版-6.安装nova计算服务(计算节点)

    安装nova计算服务(computel01计算节点 192.168.0.20)安装软件包 yum install centos-release-openstack-train -y yum insta ...

  7. oranges-给mini os 添加内存管理,进程多级反馈队列,进程内存完整性度量

    参考: 内存管理: https://www.jianshu.com/p/49cbaccd38c5 crc校验 https://www.cnblogs.com/zzdbullet/p/9580502.h ...

  8. Please commit your changes or stash them before you merge问题解决

    问题描述 error: Your local changes to the following files would be overwritten by merge: xxx/xxx/xxx.c P ...

  9. H5 页面如何展示大量的表格数据

    H5 页面如何展示大量的表格数据 列数过多 图表化 refs xgqfrms 2012-2020 www.cnblogs.com 发布文章使用:只允许注册用户才可以访问!

  10. Javascript 严格模式("use strict";)详细解解

    1 1 1 Javascript 严格模式("use strict";)详细解解 "use strict";定义JavaScript代码应该在"str ...