码迷,mamicode.com
首页 > 其他好文 > 详细

CSP201604-3 路径解析

时间:2020-06-09 20:52:01      阅读:61      评论:0      收藏:0      [点我收藏+]

标签:ide   size   分析   bsp   字符串   拼接   include   getc   判断   

技术图片

 

 技术图片

 

 

技术图片

 

 

思路分析:

  这道题要求把所有的路径都转化成不含".."或"."的绝对路径输出,首先我们对于输入的字符串就要判断它是绝对路径还是相对路径,所以我们读入的字符串首先判断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 路径解析

标签:ide   size   分析   bsp   字符串   拼接   include   getc   判断   

原文地址:https://www.cnblogs.com/Xu-SDU/p/13080086.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!