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".
 
记住stringstream以及getline函数的作用
class Solution {
public:
    string simplifyPath(string path) {
        vector<string> str;
        stringstream ss(path);
        string sub;
        while(getline(ss,sub,'/'))
        {
            if(sub=="."||sub=="")
                continue;
            if(sub==".."&&str.size())
                str.pop_back();
            if(sub!="..")
                str.push_back(sub);
        }
        string res;
        for(string s:str)
            res+="/"+s;
        if(res.empty())
            res+="/";
        return res;
    }
};
原文地址:https://www.cnblogs.com/zl1991/p/9630585.html