[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)
需要注意的是处理一下空栈的情景。
学习java的新手,尝试将学到的内容总结为博客,内容如有错误,欢迎指正,感激不尽。

浙公网安备 33010602011771号