问题71:以Unix风格给出一个文件的绝对路径,你需要简化它。换句话说,将其转换为规范路径。
在Unix风格的文件系统中,一个点(.)表示当前目录本身;此外,两个点(..)表示将目录切换到上一级(指向父目录);两者都可以是复杂相对路径的组成部分。
请注意,返回的规范路径必须始终以斜杠/开头,并且两个目录名之间必须只有一个斜杠/。最后一个目录名(如果存在)不能以/结尾。此外,规范路径必须是表示绝对路径的最短字符串。
来源:力扣(LeetCode)
链接:https://leetcode.com/problems/simplify-path
这道题,我一开始是想,先把这个字符串中的有效信息提取出来,包括目录名和(..),存入一个列表。再处理列表,如果遇到(..),就把上一个目录名删除。这种做法,相当麻烦,需要很多搜索条件。
后来发现,这题使用.split()函数是相当容易的,可以直接把字符串中的有效信息提取到列表里,然后处理。
完整代码:
class Solution:
def simplifyPath(self, path: str) -> str:
l = path.split("/")
result = []
print(l)
for item in l:
if item:
if item == '..':
if result:
result.pop()
elif item == '.':
continue
else:
result.append(item)
output_str = '/' + '/'.join(result)
return output_str
运行结果: