CCF 201604-3 路径解析 100分
Posted 登登登ccc
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CCF 201604-3 路径解析 100分相关的知识,希望对你有一定的参考价值。
题目来源: - 计算机软件能力认证考试系统
#include<bits/stdc++.h>
using namespace std;
vector<string> split(string s) {
vector<string> res;
stringstream ss(s);
while(getline(ss,s,'/')) //getline读入,遇到"/"停止读入
res.push_back(s); //读入的目录存入字符串数组中
return res;
}
int main() {
int n;
string cur;
cin>>n>>cur;
getchar();
string str;
while(n--) {
getline(cin,str);
if (str.empty() || str[0]!='/') { //如果是相对路径,则在路径首部添加当前路径
str=cur+"/"+str;
}
auto path=split(str); //返回自动类型
vector<string> ans; //用来存入经过正规化后的路径
for(auto s:path) {
if(s=="." || s.empty() || (s==".."&&ans.empty())) //遇到"."或遇到" "或遇到".."但不存在上级目录,不进行任何操作
continue;
else if(s=="..") //遇到"..",回到上级目录
ans.pop_back();
else
ans.push_back(s); //其他情况都进入下级目录
}
string out;
for(string i:ans) //将各级目录用"/"连接
out+="/"+i;
cout<<(out.empty() ? "/" : out)<<endl; //如果是空目录则输出"/"
}
return 0;
}
以上是关于CCF 201604-3 路径解析 100分的主要内容,如果未能解决你的问题,请参考以下文章