前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >打卡群刷题总结0719——简化路径

打卡群刷题总结0719——简化路径

作者头像
木又AI帮
发布2020-07-22 10:16:33
2620
发布2020-07-22 10:16:33
举报
文章被收录于专栏:木又AI帮

题目:71. 简化路径

链接:https://leetcode-cn.com/problems/simplify-path

以 Unix 风格给出一个文件的绝对路径,你需要简化它,将其转换为规范路径。 在 Unix 风格的文件系统中,一个点(.)表示当前目录本身;此外,两个点 (..) 表示将目录切换到上一级(指向父目录);两者都可以是复杂相对路径的组成部分。 请注意,返回的规范路径必须始终以斜杠 / 开头,并且两个目录名之间必须只有一个斜杠 /。最后一个目录名(如果存在)不能以 / 结尾。此外,规范路径必须是表示绝对路径的最短字符串。 示例 1: 输入:"/home/" 输出:"/home" 解释:注意,最后一个目录名后面没有斜杠。 示例 2: 输入:"/../" 输出:"/" 解释:从根目录向上一级是不可行的,因为根是你可以到达的最高级。

解题:

1、栈的典型应用。分割字符串后,遇到""和".",不做操作;遇到"..",弹出栈顶元素;其他情况,压栈。

有一些特殊情况需要处理,比如".."的个数较多。

代码:

代码语言:javascript
复制
class Solution(object):
    def simplifyPath(self, path):
        """
        :type path: str
        :rtype: str
        """
        stack = path.split('/')
        stack.insert(0, '/')

        i = 1
        while i < len(stack):
            if stack[i] == '' or stack[i] == '.':
                stack.pop(i)
                i -= 1
            elif stack[i] == '..':
                stack.pop(i)
                if i - 1 >= 0:
                    stack.pop(i - 1)
                    i -= 2
                else:
                    # raise Exception("error")
                    i -= 1

            i += 1

        if len(stack) > 0 and stack[0] == '/':
            stack.pop(0)
        return '/' + '/'.join(stack)
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-07-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 木又AI帮 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档