Fork me on GitHub

Leetcode71. Simplify Path简化路径

给定一个文档 (Unix-style) 的完全路径,请进行路径简化。

例如,

path = "/home/", => "/home"

path = "/a/./b/../../c/", => "/c"

边界情况:

  • 你是否考虑了 路径 = "/../" 的情况?

在这种情况下,你需返回 "/" 。

  • 此外,路径中也可能包含多个斜杠 '/' ,如 "/home//foo/" 。

在这种情况下,你可忽略多余的斜杠,返回 "/home/foo" 。

 

这道题的要求是简化一个Unix风格下的文件的绝对路径。

字符串处理,".."是返回上级目录(如果是根目录则不处理),重复连续出现的'/',只按1个处理, 如果路径名是".",则不处理;

 

 

class Solution {
public:
    string simplifyPath(string path)
    {
        int len = path.size();
        string str = "";
        stack<string> q;
        for(int i = 0; i < len; i++)
        {
            if(i == len - 1 && path[i] != '/')
                str += path[i];
            if(path[i] == '/' && str == "")
                continue;
            else if(path[i] ==  '/' || i == len - 1)
            {
                if(str == "..")
                {
                    if(!q.empty())
                        q.pop();
                }
                else if(str == ".")
                {

                }
                else
                {
                    q.push(str);
                }
                str = "";
            }
            else
                str += path[i];
        }
        string res = "";
        while(!q.empty())
        {
            res = q.top() + res;
            res = "/" + res;
            q.pop();
        }
        if(res == "")
            return "/";
        return res;
    }
};

 

posted @   lMonster81  阅读(125)  评论(0编辑  收藏  举报
编辑推荐:
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
阅读排行:
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
/*评论*/ /*top按钮*/

/* 网易云控件 */

点击右上角即可分享
微信分享提示