改进版简化路径。

美图
在这里插入图片描述

在原有的基础上增加对 cd - 的处理。

在 Unix 命令中,cd - 表示返回上一次所在的目录。我们可以使用一个变量来记录上一次所在的目录,在遇到 cd - 时将当前目录设置为上一次所在的目录。

以下是增加对 cd - 的处理后的代码:

4
cd /aa/bb/cc/dd/
cd ./ee/ff
cd gg/../hh
cd ./tt
cd -

函数输出:

/aa/bb/cc/dd/ee/ff/hh
def simplify_path(num: int, paths: List[str]) -> str:
    stack = []
    prev_dir = ''
    for path in paths:
        if path.startswith('/'):
            stack = []
            path = path[1:]
        elif path == '-':
            path = prev_dir
        parts = path.split('/')
        for part in parts:
            if part == '..':
                if stack:
                    stack.pop()
            elif part != '.' and part:
                stack.append(part)
        prev_dir = '/' + '/'.join(stack)
    return prev_dir

num = int(input())
paths = [input().strip() for _ in range(num)]
result = simplify_path(num, paths)
print(result)

在代码中,我们增加了一个 prev_dir 变量来记录上一次所在的目录。当遇到 cd - 命令时,将当前目录设置为上一次所在的目录。然后,对于其他情况,我们可以继续使用栈来存储目录,并记录当前目录的完整路径。最后,返回上一次所在目录的完整路径即可。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值