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;
    }
};

 


注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
© 2014-2019 ITdaan.com 粤ICP备14056181号