[leetcode]简化路径

以 Unix 风格给出一个文件的绝对路径,你需要简化它。或者换句话说,将其转换为规范路径。

在 Unix 风格的文件系统中,一个点(.)表示当前目录本身;此外,两个点 (..) 表示将目录切换到上一级(指向父目录);两者都可以是复杂相对路径的组成部分。

请注意,返回的规范路径必须始终以斜杠 / 开头,并且两个目录名之间必须只有一个斜杠 /。最后一个目录名(如果存在)不能 / 结尾。此外,规范路径必须是表示绝对路径的最短字符串。

 直接从左到右遍历,用栈处理就行了,碰到普通的路径,就压栈,碰到'.',直接略过,碰到'..',将上一次入栈的元素拉出来(相当于返回上一级),最终拼装成一个路径即可;

代码:

class Solution:
    def simplifyPath(self, path: str) -> str:
        # import os
        # return os.path.abspath(path)
        # 直接用栈处理就好了
        p = []
        for c in path.split('/'):
            if c:
                if c == '..':
                    if p:
                        p.pop()
                elif c != '.':
                    p.append(c)

        return '/%s' % '/'.join(p)

需要注意的是处理一下空栈的情景。

posted @ 2021-01-10 16:16  随风EK  阅读(106)  评论(0)    收藏  举报