Simplify Path -- leetcode

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".

基本思路:

1. 以字符 /  作为分隔符,取子串。

2. 对 .. 作特殊处理。

3. 即不是. 又不是 ..  则存入栈中

4. 最后串接

所遇到的特殊case,

输入          /...      (连着三个小数点)

期望输出  /..      (亦是连着三个小数点).

进入循环前,在path末尾添加 / , 作为哨兵,可简化代码。

class Solution {
public:
    string simplifyPath(string path) {
        vector<string> stack;
        string name;
        path.push_back('/');
        for (int i=0; i<path.size(); i++) {
            if (path[i] == '/') {
                if (name == "..") {
                     if (!stack.empty()) stack.pop_back();
                }
                else if (name != "." && !name.empty())
                    stack.push_back(name);

                name.clear();
            }
            else
                name.push_back(path[i]);
        }

        if (stack.empty()) return "/";

        string ans;
        for (auto p: stack)
            ans += "/" + p;

        return ans;
    }
};
时间: 2024-11-13 09:17:34

Simplify Path -- leetcode的相关文章

Simplify Path leetcode java

题目: Given an absolute path for a file (Unix-style), simplify it. For example, path = "/home/", => "/home" path = "/a/./b/../../c/", => "/c" Corner Cases: Did you consider the case where path = "/../"

Simplify Path——LeetCode

Given an absolute path for a file (Unix-style), simplify it. For example,path = "/home/", => "/home"path = "/a/./b/../../c/", => "/c" 题目大意:给一个String,表示一个文件的绝对路径,简化它. 解题思路:用一个栈表示即可,..向上返回一层,就是出栈一个元素,.不做操作,其他的入栈

leetcode 71 Simplify Path

题目连接 https://leetcode.com/problems/simplify-path/ Simplify Path Description Given an absolute path for a file (Unix-style), simplify it. For example,path = "/home/", => "/home"path = "/a/./b/../../c/", => "/c"

【LeetCode】Simplify Path

Simplify Path Given an absolute path for a file (Unix-style), simplify it. Given an absolute path for a file (Unix-style), simplify it. For example,path = "/home/", => "/home"path = "/a/./b/../../c/", => "/c"

[leetcode]Simplify Path @ Python

原题地址:https://oj.leetcode.com/problems/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 corn

[LeetCode] Simplify Path(可以不用看)

Given an absolute path for a file (Unix-style), simplify it. For example, path = "/home/", => "/home" path = "/a/./b/../../c/", => "/c" Corner Cases: Did you consider the case where path = "/../"? In

leetCode 71.Simplify Path(化简路径) 解题思路和方法

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

[C++]LeetCode: 117 Simplify Path (简化Unix路径 list双向链表)

题目: 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 w

LeetCode开心刷题四十八天——71. Simplify Path

71. Simplify Path Medium 5101348FavoriteShare Given an absolute path for a file (Unix-style), simplify it. Or in other words, convert it to the canonical path. In a UNIX-style file system, a period . refers to the current directory. Furthermore, a do