专栏首页蛮三刀的后端开发专栏[Leetcode][python]Simplify Path

[Leetcode][python]Simplify Path

题目大意

化简Unix系统下一个文件的绝对路径。 输入: path = “/a/./b/../../c/”

输出: “/c”

解题思路

参考: https://shenjie1993.gitbooks.io/leetcode-python/071%20Simplify%20Path.html

  1. “/” 根目录
  2. “..” 跳转上级目录,上级目录为空,所以依旧处于 “/”
  3. “a” 进入子目录a,目前处于 “/a”
  4. “b” 进入子目录b,目前处于 “/a/b”
  5. “c” 进入子目录c,目前处于 “/a/b/c”
  6. “.” 当前目录,不操作,仍处于 “/a/b/c”
  7. “..” 返回上级目录,最终为 “/a/b”

用栈来处理,碰到有效字符就压栈,遇到上层目录字符”..”且栈不空时就弹出。为了最后连接字符串时头上有根目录,在栈底加一个空字符。

>>> a= ['a','b','c']
>>> '/'.join(a)
'a/b/c'
>>> a = ['','a','b']
>>> '/'.join(a)
'/a/b

代码

class Solution(object):
    def simplifyPath(self, path):
        """
        :type path: str
        :rtype: str
        """
        parts = path.split("/")
        result = ['']
        for part in parts:
            if part:
                if part not in ('.', '..'):
                    if len(result) == 0:  # 若栈底空了,加入空字符再加入目录名
                        result.append('')
                    result.append(part)
                elif part == '..' and len(result) > 0:
                    result.pop()
        if len(result) < 2:
            return "/"
        else:
            return "/".join(result)  # 以/来组合list里的字符

总结

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • [Leetcode][python]Restore IP Addresses/复原IP地址

    来自: https://shenjie1993.gitbooks.io/leetcode-python/093%20Restore%20IP%20Addre...

    后端技术漫谈
  • [Leetcode][python]Roman to Integer/罗马数字转整数

    根据罗马数字的规则,只有在前面的字母比当前字母小的情况下要执行减法,其他情况只需要把罗马字母对应的数字直接相加即可。如果发现前一个字母比当前字母小,就减去前一个...

    后端技术漫谈
  • [Leetcode][python]Combination Sum II/组合总和 II

    所有数字都是正数 组合中的数字要按照从小到大的顺序 原数组中的数字只可以出现一次 结果集中不能够有重复的组合

    后端技术漫谈
  • 数值的整数次方

  • 算法提高 9-2 文本加密

    问题描述   先编写函数EncryptChar,按照下述规则将给定的字符c转化(加密)为新的字符:”A”转化”B”,”B”转化为”C”,… …”Z”转化为”...

    AI那点小事
  • 异名解题:7. 整数反转

    给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。注意:假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−2³¹, ...

    异名
  • Qt音视频开发40-人脸识别离线版

    上一篇文章写了在线调用人脸识别api进行处理,其实很多的客户需求是要求离线使用的,尤其是一些事业单位,严禁这些刷脸数据外泄上传到服务器,尽管各个厂家号称严格保密...

    feiyangqingyun
  • 猿实战14——前台类目之广告牌设置

    上一个章节,猿人君教会了你如何去实现前台类目,虽然已经讲得很详细了,还是有朋友认为比较困难。可能是每个人的基础真的不一样吧。

    山旮旯的胖子
  • python3中的缺省参数和命名参数

    于小勇
  • golang slice N选3 组合

    package main import( "fmt" ) func main(){ var a = []int32{1,2,3,...

    李海彬

扫码关注云+社区

领取腾讯云代金券