Simplify Path

    xiaoxiao2023-03-25  6

    Simplify Path

    Given an absolute path for a file (Unix-style), simplify it.

    For example, path = "/home/", => "/home" path = "/a/./b/../../c/", => "/c"

    click to show corner cases.

    Corner Cases:

    Did you consider the case where path = "/../"? In this case, you should return "/".Another corner case is the path might contain multiple slashes '/' together, such as "/home//foo/". In this case, you should ignore redundant slashes and return "/home/foo". https://discuss.leetcode.com/topic/8678/c-10-lines-solution

    C++中的字符串输入gteline(fin,str,'/');这个输入函数的第一个参数是输入流,第二个参数是以string的形式存储的位置,'/'是分隔符,遇到一个分隔符,就将当前截断的值存储,不包含分隔符。直到发生以下3种情况,才会停止:1. 读到文件尾;2. 遇到分界字符

    '\n',将把分界字符从输入流中删除,但不存储;3. 读取的字符数达到最大值

    思路:将path根据'/'分解成一个个字符串,再处理不同的情况。

    string simplifyPath(string path) { string res, tmp; vector stk; stringstream ss(path); while(getline(ss,tmp,'/')) { if (tmp == "" or tmp == ".") continue; if (tmp == ".." and !stk.empty()) stk.pop_back(); else if (tmp != "..") stk.push_back(tmp); } for(auto str : stk) res += "/"+str; return res.empty() ? "/" : res; }

    转载请注明原文地址: https://ju.6miu.com/read-1203521.html
    最新回复(0)