标签:
Given an absolute path for a file (Unix-style), simplify it.
For example,
path = "/home/"
, => "/home"
path = "/a/./b/../../c/"
, => "/c"
"/../"
?"/"
.‘/‘
together, such as "/home//foo/"
."/home/foo"
.被这一串的文件路径名给唬住了,还是缺乏分析问题的能力啊,path = "/a/./b/../../c/"
, => "/c"其实就是当前目录和上层目录相互抵消啊,从左往右依次看过去就行了,然后就是以“/”为分割符分割这个字符串了,
class Solution { public: string simplifyPath(string path) { assert(path[0]==‘/‘); vector<string> vec; int i = 0; while(i < path.size()) { int end = i+1; while(end < path.size() && path[end] != ‘/‘) end++; string sub = path.substr(i+1,end-i-1); if(sub.length()>0){ if(sub == ".."){ if(!vec.empty()) vec.pop_back(); } else if(sub != ".") vec.push_back(sub); } i=end; } if(vec.empty())return "/"; string res; for(int i = 0; i< vec.size(); i++) res += "/" + vec[i]; return res; } };
标签:
原文地址:http://www.cnblogs.com/qiaozhoulin/p/4605308.html