leetcode: 71. Simplify Path

Problem

# Given an absolute path for a file (Unix-style), simplify it.
#
# For example,
# path = "/home/", => "/home"
# path = "/a/./b/../../c/", => "/c"
#
# click to show corner cases.
#
# Corner Cases:
#
# Did you consider the case where path = "/../"?
# In this case, you should return "/".
# Another corner case is the path might contain multiple slashes '/' together, 
# such as "/home//foo/".
# In this case, you should ignore redundant slashes and return "/home/foo".

Idea

# 思路:
# 1. split "/" 形成List, 同时剔除 "." 和 ""
# 2. 如果 ".." 就 pop 前面的
# 3. 反之则入队

AC

Stack:

class Solution():
    def simplifyPath(self, path):
        tokens, stack = [p for p in path.split("/") if p!="." and p!=""], []
        for t in tokens:
            if t == "..":
                if stack:
                    stack.pop()
            else:
                stack.append(t)
        return "/" + "/".join(stack)


if __name__ == "__main__":
    assert Solution().simplifyPath("/home//foo/") == '/home/foo'
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值