71. Simplify Path

https://leetcode.com/problems/simplify-path/description/

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

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

Thoughts

压缩Unix路径:遇到.跳过,遇到..把上一个退出来。把上一个退出来用stack。

Code

/*
 * @lc app=leetcode id=71 lang=cpp
 *
 * [71] Simplify Path
 */

// @lc code=start
class Solution {
public:
    string simplifyPath(string path) {
        vector<string> s;
        stringstream ss(path);
        string tmp;
        while(getline(ss, tmp, '/')) {
            if (tmp == "" || tmp == ".") continue;
            if (tmp == ".." && !s.empty()) s.pop_back();
            else if (tmp != "..") s.push_back(tmp);
        }
        tmp.clear();
        for (const auto i : s) tmp += "/" + i;
        return tmp.empty() ? "/" : tmp;
    }
};
// @lc code=end

Last updated