leetcode第一刷_Simplify Path

來源:互聯網
上載者:User

這道題的思路還是比較清晰的,用棧嘛,麻煩是麻煩在這些層次的細節上。主要有下面幾個:

./和/:當前路徑,遇到這種,應該將後面的檔案夾或檔案入棧。

../:上一層路徑,遇到這種,應該做一次出棧操作,相當於返回了上一層目錄。

//:可以直接簡化成‘/’。

還有下面幾個要注意的測試案例:

1. linux的路徑名可以含有很多特殊字元,比如“_”,".","*"等等,所以要特別注意含有"."的哪些路徑名。

2. 在路徑最後的..和.是不需要後面接上'/'的。

代碼寫的不是很好,回頭應該更正一下:

class Solution {public:    string simplifyPath(string path) {        stack<string> s;        int len = path.length();        int i=0;        string tp, res="";        while(i<len){            if(path[i] == '/'){i++;}            else if(isalnum(path[i])||path[i]=='_'){                int j=i+1;                while(path[i-1]=='.') i--;                while((isalnum(path[j])||path[j]=='_')&&j<len) j++;                tp = path.substr(i, j-i);                s.push(tp);                i = j;            }else if(path[i] == '.'){                if(i+1==len)    break;                else if(path[i+1]=='/') i = i+2;                else if(path[i+1]=='.'){                    if(path[i+2] == '/'||i+2==len){                        i = i+3;                        if(!s.empty())s.pop();                    }else if(path[i+2] == '.'){                        if(i+3==len||path[i+3] == '/')                            s.push("...");                        i = i+3;                    }else                        i = i+2;                }else                    i = i+1;            }        }        if(s.empty())   res = "/";        else{            while(!s.empty()){                res = "/"+s.top()+res;                s.pop();            }        }        return res;    }};


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.