CSP201604-3 路径解析

Posted xu-sdu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CSP201604-3 路径解析相关的知识,希望对你有一定的参考价值。

技术图片

 

 技术图片

 

 

技术图片

 

 

思路分析:

  这道题要求把所有的路径都转化成不含".."或"."的绝对路径输出,首先我们对于输入的字符串就要判断它是绝对路径还是相对路径,所以我们读入的字符串首先判断str【0】==‘/’。 对于相对路径,我们将根节点和这个相对路径做一个拼接,转化成绝对路径。

  接下来就是对".."和"."以及"//"的处理。 对于.. , 我们要找到每一个这样字符串的地方,然后删掉/..前面的一个路径和 .. 即可。对于 . 我们直接删掉即可。然后找到//删掉即可。

  最后输出正规化之后的绝对路径。

代码:

技术图片
#include<iostream>
#include<sstream>
using namespace std;

int main() {
    int n, pos, pos1;
    
    string root;
    cin >> n >> root;
    getchar();
    while (n--) {
        string str;
        getline(cin, str);
        if (str.empty()) str = root;                
        else if (str[0] != /) str = root + "/" + str;
        while ((pos = str.find("/../")) != -1){
            if (!pos)str.erase(0, 3);
            else {                
                pos1 = str.rfind("/", pos - 1);
                str.erase(pos1, pos - pos1 + 3);
            }
        }
        while ((pos = str.find("/./")) != -1) str.erase(pos, 2);
        while ((pos = str.find("//")) != -1) str.erase(pos,1);
        if (str.size() > 1 && str[str.size() - 1] == /) str.erase(str.size() - 1, 1);
        cout << str << endl;
    }
    return 0;
}
View Code

 

以上是关于CSP201604-3 路径解析的主要内容,如果未能解决你的问题,请参考以下文章

201604-3路径解析

CCF - 201604-3 - 路径解析

201604-3路径解析

201604-3 路径解析

CCF 201604-3 路径解析 100分

CCF 201604-3 路径解析 100分