【leetcode】Simplify Path

來源:互聯網
上載者:User

標籤:

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".
 用一個堆棧來類比路徑的行為,遇到"."不操作,遇到".."退棧,其他情況都壓入堆棧。程式中先把路徑分割出來,然後再處理 
  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 };

 

【leetcode】Simplify Path

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.