leetcode 71:簡化路徑
阿新 • • 發佈:2018-12-09
與leetcode 65一樣,感覺這種題實在沒有意義,不給出明確的說明,只能靠自己邊提交邊自己悟
其實本題就是當/../時,其前面的路徑簡化,也就是刪除,而對於/./則直接刪除即可,但像/..home/ /.home/是不動的
最簡單的方法就是根據/進行分段,就是將夾在兩個/中的字串提取出來判斷是不是. 或..
std::string simplifyPath(std::string path) { std::vector<std::string> words; std::vector<std::string> words1; int i=0; std::string ss=""; int d=path.find_first_of("/"); path=path.substr(1); while(i!=path.size()) { if(path[i]!='/'){ ss+=path[i]; } else { if(ss.size()!=0) { words.push_back(ss); ss = ""; } } i++; } if(ss.size()!=0) { words.push_back(ss); } for(int i=0;i<words.size();i++){ if(words[i]!="."&&words[i]!=".."){ words1.push_back(words[i]); } if(words[i]==".."){ if(words1.size()!=0){ words1.pop_back(); } } } ss="/"; if(words1.size()==0) return ss; for(int i=0;i<words1.size()-1;i++){ ss+=words1[i]; ss+="/"; } ss+=words1[words1.size()-1]; return ss; }