# Leetcode 71 簡化路徑

leetcode第71題: 簡化路徑

https://leetcode.cn/problems/simplify-path/?envType=study-plan-v2&envId=top-interview-150

// 我的解法
string simplifyPath(string path)
{
    stack<string> s;
    // ./ ../ // 
    char dot = '.';
    char g = '/';
    string dir;
    bool flag = false;
    string pattern;
    string folder;
    for (int i = 0;i < path.size(); ++i)
    {
        if (path[i] == 'd')
            cout << "get into" << endl;
        if (i == 0 && path[i] == g)
            continue;
        if (path[i] == dot)
        {
            flag = true;
            pattern += dot;
            //continue;
        }
        if (flag && path[i] == '/')
        {
            if (pattern == LAST || pattern == CURRENT)
            {
                if (pattern == LAST)
                {
                    if (!s.empty())
                        s.pop();
                }
                // current直接delete
                flag = false;
                pattern.clear();
            }
            else {
                // 為 ....等其他形式
                s.push(folder);
                pattern.clear();
                folder.clear();
            }
            continue;
        }
        if (path[i] == '/')
        {
            if (!folder.empty())
            {
                s.push(folder);
                folder.clear();
            }
            continue;
        }
        folder += path[i];
    }
    if (pattern == LAST || pattern == CURRENT)
    {
        if (!s.empty() && pattern == LAST)
        {
            s.pop();
        }
        pattern.clear();
    }
    if (!pattern.empty())
        s.push(pattern);
    if (!folder.empty())
    {
        s.push(folder);
    }
        
    string res;
    while (!s.empty())
    {
        res = "/" + s.top() + res;
        s.pop();
    }
    return !res.empty() ? res : "/";
}

當(dāng)你的循環(huán)已經(jīng)非常復(fù)雜,邏輯已經(jīng)很亂時瘪松,需要想當(dāng)肯定是方法出現(xiàn)了問題遍搞,需要盡快轉(zhuǎn)變思維拓巧,跳出來

// 實(shí)際借助字符分割很快就解決了
class Solution {
public:
    string simplifyPath(string path) {
        auto split = [](const string& s, char delim) -> vector<string> {
            vector<string> ans;
            string cur;
            for (char ch: s) {
                if (ch == delim) {
                    ans.push_back(move(cur));
                    cur.clear();
                }
                else {
                    cur += ch;
                }
            }
            ans.push_back(move(cur));
            return ans;
        };

        vector<string> names = split(path, '/');
        vector<string> stack;
        for (string& name: names) {
            if (name == "..") {
                if (!stack.empty()) {
                    stack.pop_back();
                }
            }
            else if (!name.empty() && name != ".") {
                stack.push_back(move(name));
            }
        }
        string ans;
        if (stack.empty()) {
            ans = "/";
        }
        else {
            for (string& name: stack) {
                ans += "/" + move(name);
            }
        }
        return ans;
    }
};
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末览露,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子具则,更是在濱河造成了極大的恐慌苛骨,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,858評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件顾稀,死亡現(xiàn)場離奇詭異达罗,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)静秆,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,372評論 3 395
  • 文/潘曉璐 我一進(jìn)店門粮揉,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人抚笔,你說我怎么就攤上這事扶认。” “怎么了殊橙?”我有些...
    開封第一講書人閱讀 165,282評論 0 356
  • 文/不壞的土叔 我叫張陵辐宾,是天一觀的道長。 經(jīng)常有香客問我膨蛮,道長叠纹,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,842評論 1 295
  • 正文 為了忘掉前任敞葛,我火速辦了婚禮吊洼,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘制肮。我一直安慰自己冒窍,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,857評論 6 392
  • 文/花漫 我一把揭開白布豺鼻。 她就那樣靜靜地躺著综液,像睡著了一般。 火紅的嫁衣襯著肌膚如雪儒飒。 梳的紋絲不亂的頭發(fā)上谬莹,一...
    開封第一講書人閱讀 51,679評論 1 305
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼附帽。 笑死埠戳,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的蕉扮。 我是一名探鬼主播整胃,決...
    沈念sama閱讀 40,406評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼喳钟!你這毒婦竟也來了屁使?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,311評論 0 276
  • 序言:老撾萬榮一對情侶失蹤奔则,失蹤者是張志新(化名)和其女友劉穎蛮寂,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體易茬,經(jīng)...
    沈念sama閱讀 45,767評論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡酬蹋,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,945評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了抽莱。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片范抓。...
    茶點(diǎn)故事閱讀 40,090評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖岸蜗,靈堂內(nèi)的尸體忽然破棺而出尉咕,到底是詐尸還是另有隱情叠蝇,我是刑警寧澤璃岳,帶...
    沈念sama閱讀 35,785評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站悔捶,受9級特大地震影響铃慷,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜蜕该,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,420評論 3 331
  • 文/蒙蒙 一犁柜、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧堂淡,春花似錦馋缅、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,988評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至皆的,卻和暖如春覆履,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,101評論 1 271
  • 我被黑心中介騙來泰國打工硝全, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留栖雾,地道東北人。 一個月前我還...
    沈念sama閱讀 48,298評論 3 372
  • 正文 我出身青樓伟众,卻偏偏與公主長得像析藕,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子赂鲤,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,033評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 題目:以 Unix 風(fēng)格給出一個文件的絕對路徑噪径,你需要簡化它∈酰或者換句話說找爱,將其轉(zhuǎn)換為規(guī)范路徑。 在 Unix 風(fēng)...
    minningl閱讀 200評論 0 0
  • 前言 我們社區(qū)陸續(xù)會將顧毅(Netflix 增長黑客泡孩,《iOS 面試之道》作者车摄,ACE 職業(yè)健身教練。)的 Swi...
    Swift社區(qū)閱讀 89評論 0 1
  • 不論是誰都應(yīng)該活成自己想要的樣子仑鸥,一輩子只有一次吮播,為什么不好好活一次 。 參考71. 簡化路徑[https://l...
    紅樹_閱讀 84評論 0 2
  • 題目要求: 給定一個整數(shù)數(shù)組 asteroids眼俊,表示在同一行的小行星意狠。 對于數(shù)組中的每一個元素,其絕對值表示小行...
    楊Jack閱讀 85評論 1 2
  • 71. 簡化路徑[https://leetcode-cn.com/problems/simplify-path/]...
    我想要日更徽章閱讀 245評論 0 1