- #include<iostream>
- #include<cstdio>
- #include<string>
- #include<cstring>
- #include<algorithm>
- #include<vector>
- using namespace std;
- int n;
- const int maxn=1e3+2;
- char str[maxn];
- string rel;
- void handle(){
- int len=strlen(str);
- len--;
- if(len==0){
- cout<<rel<<endl;
- return;
- }
- string ans;
- ans.clear();
- if(str[0]=='/'){
- ans="";
- }else{
- ans=rel;
- }
- int i=0;
- while(i<len){
- if(str[i]=='.'&&i+1<len&&str[i+1]=='.'&&((i+2<len&&str[i+2]=='/')||(i+2==len))){
- int j=ans.length()-1;
- for(;j>=0;j--){
- if(ans[j]=='/'){
- break;
- }
- }
- if(j<0) ans="";
- else ans=ans.substr(0,j);
- i+=2;
- }else if(str[i]=='.'&&((i+1<len&&str[i+1]=='/')||(i+1==len))){
- i++;
- }else if(str[i]=='/'){
- while(++i<len&&str[i]=='/');
- }else{
- string tmp="/";
- tmp+=str[i];
- while(++i<len&&str[i]!='/'){
- tmp+=str[i];
- }
- ans+=tmp;
- }
- }
- if(ans==""){
- printf("/\n");
- return;
- }else{
- cout<<ans<<endl;
- return;
- }
- }
- int main(){
- cin>>n;
- getchar();
- fgets(str,maxn,stdin);
- rel.clear();
- for(int i=0;i<strlen(str)-1;i++){
- rel+=str[i];
- }
- while(n--){
- fgets(str,maxn,stdin);
- handle();
- }
- return 0;
- }
来源: http://www.bubuko.com/infodetail-2655157.html