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分的主要内容,如果未能解决你的问题,请参考以下文章

CCF 201604-3 路径解析 100分

ccf 201604-3 路径解析

CCF - 201604-3 - 路径解析

CCF_ 201403-3 _命令行选项

CCF201703-5 引水入城(100分题解链接)

201604-3路径解析