标签:
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"
.1 class Solution { 2 3 public: 5 string simplifyPath(string path) { 9 vector<string> spl; 11 spliceStr(path,spl); 15 vector<string> stk; 17 for(int i=0;i<spl.size();i++) 19 { 21 if(spl[i]=="..") 23 { 25 if(!stk.empty()) 27 { 29 stk.pop_back(); 31 } 33 } 35 else if(spl[i]==".") 37 { 39 continue; 41 } 43 else 45 { 47 stk.push_back(spl[i]); 49 } 51 } 55 string result=""; 57 for(int i=0;i<stk.size();i++) 59 { 61 result+="/"+stk[i]; 63 } 67 if(result=="") 69 { 71 result="/"; 73 } 79 return result; 83 } 84 85 86 87 88 89 void spliceStr(string &path,vector<string> &result) 91 { 93 int pre_index=0; 95 string tmp; 97 for(int i=0;i<path.size();i++) 99 { 101 if(path[i]==‘/‘) 103 { 105 tmp=path.substr(pre_index,i-pre_index); 107 if(tmp!="") 109 { 111 result.push_back(tmp); 113 } 115 pre_index=i+1; 117 } 119 } 122 123 if(pre_index<path.size()) 125 { 127 tmp=path.substr(pre_index,path.size()-pre_index); 129 if(tmp!="") 131 { 133 result.push_back(tmp); 135 } 137 } 139 } 141 };
标签:
原文地址:http://www.cnblogs.com/reachteam/p/4192434.html