stl+模拟 CCF2016 4 路径解析

本文介绍了一个使用STL和模拟算法解决CCF20164路径解析问题的方法。该算法首先读取输入的路径字符串,并通过一系列规则处理路径中的特殊字符,如删除多余的斜杠、解析相对路径等,最终输出规范化的路径。
 1 // stl+模拟 CCF2016 4 路径解析
 2 // 一开始题意理解错了。。。。
 3 
 4 #include <iostream>
 5 #include <string>
 6 #include <vector>
 7 using namespace std;
 8 void fre() {freopen("in.txt","r",stdin);}
 9 vector<string> l;
10 int main(){
11     int n;
12     string str;
13     cin>>n>>str;
14     getchar();
15     for(int i=1;i<=n;i++){
16         string s;
17         getline(cin,s);
18         if(s[0]!='/') s=str+'/'+s;
19         if(s.size()==0) s=str;
20         int pos;
21         while((pos=s.find("//"))!=-1){
22             int count=2;
23             while(s[pos+count]=='/') count++;
24             s.erase(pos,count-1);
25         }
26         while((pos=s.find("/../"))!=-1){
27             if(pos==0){
28                 s.erase(pos+1,3);
29             }
30             else{
31                 int p=s.rfind('/',pos-1);
32                 s.erase(p,pos-p+3);
33             }
34         }
35 
36         while((pos=s.find("/./"))!=-1){
37             s.erase(pos,2);
38         }
39 
40         if(s.size()>1&&s[s.size()-1]=='/')
41             s.erase(s.size()-1);
42         l.push_back(s);
43     }
44     for(int i=0;i<n;i++){
45         cout<<l[i]<<endl;
46     }
47     return 0;
48 }

 

转载于:https://www.cnblogs.com/ITUPC/p/5852728.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值