一、问题链接
CSP 201604-3 路径解析
二、参考代码
#include <bits/stdc++.h>
using namespace std;
vector<string> split(string s,char c) {
vector<string> res;
stringstream ss(s);
string temp;
while(getline(ss,temp,c)) {
res.push_back(temp);
}
return res;
}
int main() {
ios::sync_with_stdio(false);
cin.tie(0);
int p;
string cur;
cin>>p>>cur;
cin.get();
while(p--) {
string s;
getline(cin,s);
vector<string> ans;
if(!s.empty() and s[0]!='/') {
s=cur+'/'+s;
} else if(s.empty()) {
cout<<cur<<"\n";
continue;
}
vector<string> v=split(s,'/');
for(auto &i:v) {
if(i=="." or i.empty() or (ans.empty() and i=="..")) continue;
else if(i=="..") ans.pop_back();
else ans.push_back(i);
}
if(ans.empty()) {
cout<<"/"<<"\n";
continue;
}
for(auto &i:ans) {
cout<<"/"<<i;
}
cout<<"\n";
}
return 0;
}