stl+模拟 CCF2016 4 路径解析

 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 }

 

posted @ 2016-09-08 13:26  yyblues  阅读(421)  评论(0编辑  收藏  举报