Leetcode 71 簡化路徑 字符串模擬

 

 

這題難得地方,是將字符串分組,怎麼看待由/分割得字符串。

一種直接得想法是直接split分割所有得/,然後得到得數組再拼接處理。這樣是可行得做法。

如果不用split函數呢?

關鍵是要把   / home/ fool/看成由/結尾,(結尾比開頭好處理)。

這裏遇到.或者空串不處理就好。

..需要彈出前面一個路徑,不需要用額外的棧,只需用再字符數組基礎上處理就好。

這是一道比較有技巧的模擬題目

class Solution {
public:
    string simplifyPath(string path) {
        // 最好把/看作是結尾,這樣容易處理
        string res, name;
        if(path.back()!='/') path= path + '/';
        for(auto c:path){
            if(res.empty()) res+=c;
            if(c!='/') name+=c;
            else{
                if(name!="."&&name!=""&&name!="..") res = res + name + '/';
                else if(name==".."){
                    if(res.size()>1) res.pop_back();
                    while(res.size()>1&&res.back()!='/') res.pop_back();
                }
                name.clear();
            }
        }
        
        if(res.size()>1) res.pop_back();
        return res;
    }
};

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章